在渲染响应阶段期间未呈现Managed Bean属性值

时间:2010-09-03 10:59:09

标签: jsf

我无法弄清楚我做错了什么。请求您的输入。请。

我有一个请求范围的托管bean,它有一个List,我在我的JSF 1.2 Apache my faces应用程序中呈现为数据表。当我提交表单时,由于有一些服务器端验证失败,我添加了一个FacesMessage并显示相同的JSF页面。

在此请求 - 响应周期中,在INVOKE-APPLICATION阶段,我能够看到List的值,但是当使用FacesMessage呈现页面时,数据表为空。

除了此List / Datatable之外,其他bean属性及其值将保留在此请求 - 响应周期中。

这是在action方法中构建数据表的方式 - 初始请求

    if(getInputXMLString() != null 
            && getInputXMLString().length() >0)
    {
    List<NodeDetailsVO> nodes = Utility.inputXMLStringNodeDetailsVO(getInputXMLString());
        setSelectedNodes(nodes);
    }

当我在回发请求中尝试与上面相同时(在其他操作方法中),它可以正常工作。当我在私有方法中添加我的业务逻辑时,如果我在此代码之上或之后调用它,它不起作用。我只在私有方法中使用List的getter。在getter方法中 - 我只在if和else中使用sysout。

这是数据表在xhtml页面中的呈现方式:

<h:dataTable width="80%" cellspacing="0" border="1" 
            id="nodes_datatable" cellpadding="2" 
            style="border-collapse:collapse;"
            value="#{createBean.selectedNodes}"
            binding="#{createBean.selectedNodesHTMLDataTable}"
            var="aResult"
            columnClasses="columnAlignRight,columnAlignLeft"
            >

1 个答案:

答案 0 :(得分:1)

这不是正常情况。我确实只看到两个可能的原因:

  1. 数据模型(您调用的List)已被重置。可能getter方法不仅仅返回数据模型并重新加载它,但是缺少一些基于请求的参数/条件。

  2. 数据表或其中一个父组件具有rendered属性,评估false