我在尝试设置 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);
}
}
}