SEAM Solder @RequestParam в @ViewScoped Bean с AJAX - PullRequest
0 голосов
/ 06 февраля 2012

У меня есть @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() {...}

  ...
}

id правильно вводится с вызовамикак test.jsf?id=1357, но теперь я хочу добавить некоторые элементы p:ajax на мою страницу xhtml.Это прекрасно работает, если я удаляю @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 Ответ

0 голосов
/ 25 апреля 2012

id должен быть заключен в javax.enterprise.inject.Instance; для использования со швами RequestParam.

@javax.inject.Inject
@org.jboss.solder.servlet.http.RequestParam("id")
private Instance<Long> id;

(Тем временем я перешел с @ManagedBean @ViewScoped на @Named @ViewScoped, но я думаю, что это не относится к этому вопросу)

...