首先,我的bean由spring管理,而不是由JSF管理,我正在使用this article中描述的自定义视图范围。因此,如果常规JSF2的行为很奇怪并且可能与Spring有关,请告诉我。
豆:
public class DepartmentBean {
private DefaultTreeModel model;
public void preRender(ComponentSystemEvent event) throws Exception {
if (model == null) {
model = myService.buildModel();
}
}
public String clear() {
// resetting stuff
return "pretty:";
}
}
查看:
<h:form>
<ice:panelGroup styleClass="crud-links">
<h:commandLink value="Delete" action="#{department.deleteDepartment}" />
</ice:panelGroup>
</h:form>
<h:form>
<ice:panelGroup>
<ice:tree id="tree" value="#{department.model}" var="item" hideRootNode="false" hideNavigation="false" imageDir="./xmlhttp/css/xp/css-images/">
<ice:treeNode>
<f:facet name="content">
<ice:panelGroup style="display: inline">
<ice:commandLink value="#{item.userObject.text}"></ice:commandLink>
</ice:panelGroup>
</f:facet>
</ice:treeNode>
</ice:tree>
</ice:panelGroup>
</h:form>
第一次加载页面时,model
对象填充了数据,但是当单击删除按钮时,我注意到在执行清除preRender()
方法后,模型(在清除之前填充了该模型) null,并再次填充,虽然我在同一页面,它应该保持值)
代码是否存在导致此类行为的问题,或者这是正常行为? 如果问题可能与Spring或自定义视图范围或IceFaces有关,请提供建议。
更新 - 要求:
我想在构建页面时初始化树模型,当我仍然在页面上时,树模型不会再次初始化,直到我以编程方式执行。
答案 0 :(得分:0)
哦,我的错误,初始化应该在@PostConstruct里面。