我的要求是根据用户选择的产品显示一个向导(使用下拉菜单)。所以我使用 ap:wizard 组件,其中包含 p:outpanel 中的几个步骤(自动更新为真)。最初呈现时,一切看起来都很好,即所有选项卡和导航按钮都正确显示。但是在单击下一步按钮时,导航按钮和标题选项卡正在消失。PFB 我为验证此错误而创建的示例代码和屏幕截图。
<p:panel style="height: 100px;width:500px">
<p:outputPanel autoUpdate="true">
<p:wizard>
<p:tab id="tab1" title="Tab 1">
Sample Tab 1
</p:tab>
<p:tab id="tab2" title="Tab 2">
Sample Tab 2</p:tab>
<p:tab id="tab3" title="Tab 3">
Sample Tab 3</p:tab>
</p:wizard>
</p:outputPanel>
</p:panel>
手动更新不会刷新数据表中的数据。我有一个非常混乱的要求。我有一个表单,其中有一个数据表和两个命令按钮,即删除和更新详细信息。单击删除时,必须从数据表中删除所选记录(数据库正在更新,但 UI 没有更新)。单击“更新详细信息”时,必须在数据表下显示一个向导,其中包含有关所选记录的详细信息。用户应该能够从数据表中选择不同的记录,并且必须使用正确的数据更新向导。
现在我面临着多个问题,
- 如果我将删除按钮设为 ajax,则数据表不会更新(不使用输出面板或更新完整表单)。
- 如果我使用输出面板,那么 UI 在过滤或排序时会变得混乱(由于未恢复视图状态)。
- 如果我为数据表和向导创建单独的表单,并尝试从“更新详细信息”按钮更新向导数据。然后向导数据也没有更新。
- 如果我使用输出面板,那么向导用户界面会在单击下一步时变得混乱(由于未恢复视图状态)。
PFB 场景的虚拟代码:
<h:form id="form1">
<p:outputpanel id="panel1">
<p:datatable value="#{someBeanMethod}" var="someData">
//Some data Table columns
<f:facet name="footer">
<p:commandbutton id="button1" value="delete"
actionListner="#{deletFuntion}" update="@(form1:panel1)"/>
<p:commandbutton id="button2" value="viewDetails"
actionListner="#{fetchViewMethod}" update="@(form1:panel2)"/>
</f:facet>
</p:datatable>
</p:outputpanel>
<p:outputpanel id="panel2">
<p:wizard id="wizard1" rendered = "#{someFlag}">
//Some Functionality
</p:wizard>
</p:outputpanel>
</h:form>