SEAM Solder @RequestParam в @ViewScoped Bean с AJAX
У меня есть @ViewScoped
@ManagedBean
с @RequestParam
инициализировать некоторые вещи в моем @PostConstruct
метод.
@ManagedBean @ViewScoped
public class MyBean implements Serializable
{
@javax.inject.Inject
@org.jboss.solder.servlet.http.RequestParam("id")
private long id;
@PostConstruct
public void init() {...}
...
}
Идентификатор вводится правильно с такими звонками, как test.jsf?id=1357
, но теперь я хочу добавить некоторые p:ajax
вещи на моей странице HTML. Это прекрасно работает, если я удаляю @Inject @RequestParam
(и иметь жестко закодированный id
в init()
), но если я хочу использовать эту инъекцию, ничего не происходит, и Firebug дает мне такой ответ:
<partial-response><error>
<error-name>class java.lang.IllegalStateException</error-name>
<error-message><![CDATA[Can not set long field MyBean.id to null value]]></error-message>
</error></partial-response>
Изменение типа на private Long id
результаты в
<partial-response><error>
<error-name>class java.lang.IllegalStateException</error-name>
<error-message><![CDATA[]]></error-message>
</error></partial-response>
Как я могу использовать @RequestParam
в @ViewScoped
Bean?
1 ответ
id
должен быть заключен в javax.enterprise.inject.Instance;
для использования со швами RequestParam
,
@javax.inject.Inject
@org.jboss.solder.servlet.http.RequestParam("id")
private Instance<Long> id;
(Тем временем я перешел с @ManagedBean @ViewScoped
в @Named @ViewScoped
, но я думаю, что это не относится к этому вопросу)