我在JSF 2.1中使用了primefaces 3.3。在下面的代码中,我有一个primeFaces dataTable,它包含从数据库中提取的数据行,这些数据是从我页面左侧的树组件中正确激活的。 dataTable显示并且行为正确。我有一个删除功能,可以调用"更新"这会刷新我的dataTable并在数据库更新后反映我的更改。问题在于f:facet(id =" header")。包含在该facet中的是一个commandLink,它在我的dataTable中创建一个新行。它的工作原理是我的数据库正确更新。之后不会刷新dataTable。为了刷新我的dataTable,我必须单击树组件中的另一个节点(在页面左侧),然后返回到原始treeNode以查看我的dataTable完全更新。我可以添加哪些代码来动态更新dataTable? 不幸的是,我无法添加我在这里尝试的所有排列 - 我已经花了很长时间来解决这个问题 - 并且非常感谢您的投入!
<h:form id="formRight" >
<p:dataTable var="material" value="#{entityCrudTreeBean.materialList}" id="materials" editable="true" paginator="true" rows="10" sortBy="#{material.name}">
<p:ajax event="rowEdit" listener="#{entityCrudTreeBean.onEditRow}"/>
<f:facet id="header" name="header">
In-Cell Material Editing
<br />
<p:commandLink id="create" value="Add new material" action="#{entityCrudTreeBean.createNewMaterial}" update=":formRight"/>
</f:facet>
<p:column headerText="Name" style="width:125px">
<p:cellEditor>
...
</p:cellEditor>
</p:column>
<p:column headerText="Options" style="width:10px" >
<p:rowEditor />
<p:commandLink id="delete" action="#{entityCrudTreeBean.deleteRow(material)}" update=":formRight">
<h:graphicImage value="#{resource['icons:Delete-icon.png']}" />
</p:commandLink>
</p:column>
</p:dataTable>
</h:form>
编辑:
将线路更改为
<p:commandLink id="create" value="Add new material" action="#{entityCrudTreeBean.createNewMaterial}" update=":formRight:materials"/>
也不起作用
编辑:
改为:
<f:facet id="header" name="header">
In-Cell Material Editing
<br />
<p:commandLink id="create" value="Add new material" ajax="true" process="@this" action="#{entityCrudTreeBean.createNewMaterial}" update="@form"/>
</f:facet>
也没有解决问题。
答案 0 :(得分:2)
我和你有一段相似的问题。
我的工作代码如下:
<f:facet name="header">Product List
<p:commandLink id="create" value="Add new product" ajax="true" process="@this"
action="#{modelBean.save}" update="@form"/>
</f:facet>
答案 1 :(得分:0)
<p:commandLink id="create" value="Add new material" action="#{entityCrudTreeBean.createNewMaterial}" update=":formRight"/>
对我之后的人提示:Primefaces 3.3有一个关于dataTable内更新的已知问题。您需要使用另一个组件(如表单布局)包装dataTable。在包装器上调用更新有效。
根据8月15日的primefaces博客,这已在3.4.RC1中修复。但他们改变了树组件。我会在升级之前等待3.4最终版本。