0

メソッド内のいくつかのものを初期化@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は、のような呼び出しで正しく挿入されますが、xhtmlページにtest.jsf?id=1357いくつかのものを追加したいと思います。これは、 (およびハードコードされている)p:ajaxを削除すると正常に機能しますが、このインジェクションを使用したい場合は何も起こらず、Firebugは次の応答を返します。@Inject @RequestParamidinit()

<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>

Bean@RequestParamでを使用するにはどうすればよいですか?@ViewScoped

4

1 に答える 1

0

Seamsで使用するにidは、にカプセル化する必要があります。javax.enterprise.inject.Instance;RequestParam

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

(その間に、からに切り替えまし@ManagedBean @ViewScopedたが@Named @ViewScoped、これはこの質問には関係ないと思います)

于 2012-04-25T08:47:53.967 に答える