执行操作后,查看范围重置字段为默认值

时间:2011-11-23 17:22:12

标签: spring jsf-2 icefaces

首先,我的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有关,请提供建议。

更新 - 要求

我想在构建页面时初始化树模型,当我仍然在页面上时,树模型不会再次初始化,直到我以编程方式执行。

1 个答案:

答案 0 :(得分:0)

哦,我的错误,初始化应该在@PostConstruct里面。