【发布时间】:2011-04-07 19:07:35
【问题描述】:
我无法弄清楚我做错了什么。请求您的意见。请。
我有一个请求范围的托管 bean,它有一个 List,我在我的 JSF 1.2 Apache my faces 应用程序中将其呈现为数据表。当我提交表单时,由于某些服务器端验证失败,我添加了 FacesMessage 并显示相同的 JSF 页面。
在这个请求-响应周期中,在 INVOKE-APPLICATION 阶段,我能够看到 List 的值,但是当使用 FacesMessage 呈现页面时,数据表是空的。
除此 List / Datatable 之外,其他 bean-properties 及其值都保留在此请求-响应周期中。
这就是在action方法中构造数据表的方式——初始请求
if(getInputXMLString() != null
&& getInputXMLString().length() >0)
{
List<NodeDetailsVO> nodes = Utility.inputXMLStringNodeDetailsVO(getInputXMLString());
setSelectedNodes(nodes);
}
当我在回发请求中尝试与上面相同的操作时(在其他操作方法中),它工作正常。当我在私有方法中添加我的业务逻辑时,如果我在此代码上方或之后调用它,它不起作用。我只在私有方法中使用 List 的 getter。在 getter 方法中 - 我只有在 if 和 else 里面有 sysouts。
这是数据表在 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"
>
【问题讨论】:
标签: jsf