【发布时间】:2016-08-30 17:27:21
【问题描述】:
当使用两个 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 中有重定向回facelet?
我正在使用视图参数o:viewParam 和<f:event type="preRenderView" listener="#{hroc.init}" />,因此需要考虑这一点。
【问题讨论】:
-
我记得 @all 也有类似的问题。您可以尝试使用相关组件的特定 ID 进行更新吗?
标签: ajax jsf jakarta-ee