0

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

その下に私の .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>

豆:

    @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);
            }
        }
    }
4

1 に答える 1

0

それを試してください:

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

ところで:@PostConstruct通常のライフサイクルコールバックを使用すると、コンテナによって実行されますが、イベントはまだ発生していないと思います...

于 2012-04-04T09:02:17.900 に答える