Jsf 2 对JSF生命周期感到困惑
我想显示一个呈现“组”实体列表的页面,所以我的页面(xhtml)中有这个Jsf 2 对JSF生命周期感到困惑,jsf-2,Jsf 2,我想显示一个呈现“组”实体列表的页面,所以我的页面(xhtml)中有这个 <f:event type="preRenderView" listener="#{groupController.loadGroups}" /> 现在我添加了一个表单来保存一个新组(在同一页上)。当我保存该表单时,它调用此方法: public String save() { groupDao.create(group); return "/admin/groups?faces-redirec
<f:event type="preRenderView" listener="#{groupController.loadGroups}" />
现在我添加了一个表单来保存一个新组(在同一页上)。当我保存该表单时,它调用此方法:
public String save() {
groupDao.create(group);
return "/admin/groups?faces-redirect=true";
}
我已确认该组已保存在数据库中。但是,我希望“return”语句重新加载页面,就像第一次输入页面一样,调用“preRenderView”方法等等
当它返回到页面时,它确实调用了该方法,但我使用一个数据列表来显示返回的组集合,以及何时调用
public Collection<Group> getAllGroups() {
return allGroups;
}
公共集合getAllGroups(){
返回所有组;
}
。。。“allGroups”变量已重置回null
我已经有几个月没有接触过JSF了,我想我曾经理解过这一切,但我显然不理解。谁能告诉我我做错了什么
如果我找到了答案(现在就把我的书翻出来),我会发布更新。谢谢你
更新:为了澄清,我认为loadGroups方法将在getAllGroups方法之前执行,因为它是一个preRenderView事件。但它们的执行方式似乎不对(在loadGroups()填充集合之前,首先调用getAllGroups)。顺便说一句,它是一个ViewScope bean。我不确定为什么我的原始版本不起作用,但如果我在页面中去掉preRenderView语句,并在loadGroups方法上添加@PostConstruct注释,它就可以正常工作。我理解为什么@PostConstruct方法会起作用,但不理解为什么preRenderView不起作用。不管怎样,如果我这样做的话,它会起作用
public Collection<Group> getAllGroups() {
return allGroups;
}