尝试设置一个豆变量并调用设置用户海槽事件的方法,我遇到了一个问题。问题是viewParam工作(我可以请求页面上的值和它在bean中的设置),但事件preRenderComponent(也不preRenderView)没有被触发。奇怪的是,如果我注释initUser法@PostConstruct事件确实触发,但它也触发了这心不是我想要的@PostConstruct。但是,如果我删除注释它根本不输入方法。JSF preRenderComponent事件将不会触发
下面你会发现我的.xhtml和低于我的豆。我使用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);
}
}
}
如何将范围更改为ViewScoped? – Daniel 2012-04-04 08:29:00
恐怕这不起作用,SessionScoped也不行。但我更愿意继续使用RequestScope,它应该在RequestScope中工作。 – user1312260 2012-04-04 08:32:29
还没有注意到它之前...试图让它ManagedBean豆,而不是命名... – Daniel 2012-04-04 08:36:43