Jsf 在呈现响应阶段未呈现托管Bean属性值
我不知道我做错了什么。请求您的输入。求你了 我有一个请求范围的托管bean,它有一个列表,我在JSF 1.2 Apache my faces应用程序中将其呈现为datatable。当我提交表单时,由于有些服务器端验证失败,我添加了一条FacesMessage并显示相同的JSF页面 在这个请求-响应周期中,在INVOKE-APPLICATION阶段,我能够看到列表的值,但是当使用FacesMessage呈现页面时,datatable是空的 除此列表/数据表外,其他bean属性及其值将保留在此请求-响应周期中 这就是在action方法-initial request中构造datatable的方式Jsf 在呈现响应阶段未呈现托管Bean属性值,jsf,Jsf,我不知道我做错了什么。请求您的输入。求你了 我有一个请求范围的托管bean,它有一个列表,我在JSF 1.2 Apache my faces应用程序中将其呈现为datatable。当我提交表单时,由于有些服务器端验证失败,我添加了一条FacesMessage并显示相同的JSF页面 在这个请求-响应周期中,在INVOKE-APPLICATION阶段,我能够看到列表的值,但是当使用FacesMessage呈现页面时,datatable是空的 除此列表/数据表外,其他bean属性及其值将保留在此请求-
if(getInputXMLString() != null
&& getInputXMLString().length() >0)
{
List<NodeDetailsVO> nodes = Utility.inputXMLStringNodeDetailsVO(getInputXMLString());
setSelectedNodes(nodes);
}
if(getInputXMLString()!=null
&&getInputXMLString().length()>0)
{
List nodes=Utility.inputXMLStringNodeDetailsVO(getInputXMLString());
设置所选节点(节点);
}
当我在回发请求中尝试与上面相同的操作(在其他操作方法中)时,它可以正常工作。当我在私有方法中添加业务逻辑时,如果我在代码上方或之后调用它,它就不起作用。我只在私有方法中使用列表的getter。在getter方法中,if和else中只有sysout
这是datatable在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"
>
这不是正常情况。我只看到两个可能的原因:
列表
)以某种方式被重置。可能getter方法所做的不仅仅是返回数据模型并重新加载它,而是缺少一些基于requestbased的参数/条件呈现的
属性,该属性的计算结果为false
谢谢你,巴卢斯克。2不是真的。我只是在getter中打印列表(DataModel)中对象的大小和值。你能解释更多关于缺少基于请求的参数/条件的信息吗?在请求范围的Bean中,有没有其他方法可以在请求之间保留datatable值?这个问题让我觉得列表根本没有被保留。您能否详细说明您在最初的问题中“在调用应用程序阶段,我能够看到列表的值”的确切含义?您是如何确定的?在调用的action方法中,我使用它的getter打印列表的值,我也使用PhaseListener,所以我知道在哪个阶段会发生什么。要重新措辞-如何在请求范围bean中的请求之间保留datatable值?请以与“初始”请求相同的方式加载它。getter不只是返回数据吗?getter只返回数据,不做其他事情。