在使用两个Java类时更新模型和刷新包含项列表的视图的最佳方法是什么,一个用于显示列表的视图逻辑,另一个用于删除逻辑的类(目标是保持类精益),之后通过单击其行上的PrimeFaces commandButton删除列表中的项目?
<ui:repeat var="row" value="#{hroc.siblingRows}">
<ui:repeat var="sibling" value="#{row}">
<p:commandButton update="@all" action="#{oCDelete.delete(sibling)}"/>
...
删除工作正常,但是为了让我看到更新的视图,我必须在浏览器上点击刷新。
我现在意识到附加到视图bean的模型显然没有被重新加载所以update="@all"
(或任何其他特定的id)在这里不会做任何事情。
我应该将我的OCDelete类注入视图支持bean,然后在该类中使用hroc.delete(sibling)
方法委托实际删除,然后更新我的模型吗?
或者我在OCDelete.delete
中有重定向回到小面孔吗?
我正在使用视图参数o:viewParam
和<f:event type="preRenderView" listener="#{hroc.init}" />
,因此需要考虑这一点。
答案 0 :(得分:0)
如果您使用的是primefaces v5.3.5 +,则可以使用p:repeat而不是ui:repeat
<p:repeat id="sibling" var="row" value="#{hroc.siblingRows}">
<p:repeat var="sibling" value="#{row}">
<p:commandButton update="sibling" action="#{oCDelete.delete(sibling)}"/>
否则,将ui:repeat
放入容器(例如p:panel
),给它一个id,然后使用该ID进行更新。