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