2012-04-04 37 views
0

Bean変数を設定し、ユーザートラフをイベントに設定するメソッドを呼び出す際に問題が発生しました。問題は、viewParamが動作している(私はページの値とそのBeanのセットを要求できる)が、イベントpreRenderComponent(またはpreRenderView)は起動しないということです。奇妙なのは、@ PostConstructでinitUserメソッドに注釈を付けると、トリガーとなりますが、@PostConstructのトリガーになります。これは私が望むものではありません。しかし、注釈を削除しても、メソッドにはまったく入りません。JSF preRenderComponentイベントはトリガーされません

以下は私の.xhtml以下が私のbeanです。私はnetbeansとGlassfish(3.0)サーバを使用しています。私はここで間違って何をしていますか?

XHTML:

<f:metadata> 
     <f:viewParam name="userId" value="#{tweetBean.userId}" /> 
     <f:event listener="#{tweetBean.initUser}" type="preRenderComponent" /> 
     <f:event listener="#{tweetBean.initUser}" type="preRenderView" /> 
    </f:metadata> 

BEAN:

@Named 
    @RequestScoped 
    public class tweetBean implements Serializable 
    { 
     @Inject 
     private KwetterService service; 
     private String userId; // Has Getters + setters 

     public void initUser() 
     { 
      System.out.println("test"); 

      for (User u : service.findAll()) 
      { 
       if (u.getName().equals(userId)) 
       { 
        user = u; 
        System.out.println("User found"); 
       } 
      } 

      if (user == null) 
      { 
       System.out.println("no user found with this name"); 
       user = service.find(0); 
      } 
     } 
    } 
+0

ViewScopedにスコープを変更する方法は? – Daniel

+0

私はうまく動作しません、どちらもSessionScopedしません。しかし、私はRequestScopeを使い続けることを好み、RequestScopeでうまくいくはずです。 – user1312260

+0

これまでに気付いていない...名前の代わりにManagedBean beanを作成しようとしています... – Daniel

答えて

0

それを試してみてください:ところで

<f:metadata> 
    <f:event type="javax.faces.event.PreRenderViewEvent" listener="#{tweetBean.initUser}" /> 
</f:metadata> 

:私はあなたが@PostConstructを使用する場合、通常のライフサイクル・コールバックがで実行されていることを数えますコンテナですが、イベントはまだ発砲していません...

+0

anwserのおかげで、私のプロジェクトにはいくつかの問題がありましたが、まったく同じコードが新しいプロジェクトで動作します。 – user1312260

関連する問題