我有一个问题是提交有条件渲染的富表格内的表单内容:面板。我在表单中有一个commandButton,它的操作应该在我的支持bean上执行一个方法,但是从不调用该方法,而是重新呈现整个页面。我已经读过类似的问题,问题与视图状态有关,但是我试图按照人们给出的答案而没有运气。
这是我的主要xhtml页面的一个片段,用于设置控制面板渲染的布尔值为' true' (它在数据网格内):
<a4j:commandLink execute="@this" value="#{tableData.itemNumber}" render="edit editRowPanel editForm" title="View/Edit Record Detail"
action="#{navigate.setShowEdit(true)}" oncomplete="RichFaces.$('pleaseWaitView:searchWaitPanel').hide()" >
<f:setPropertyActionListener target="#{context.currentItem}" value="#{tableData}" />
</a4j:commandLink>
上面的代码正在渲染面板。
以下是显示面板的主xhtml页面中的代码:
<h:panelGroup id="edit">
<rich:panel id="editRowPanel" rendered="#{navigate.isShowEdit()}" style="padding: 10px" >
<f:facet name="header">
<h:outputText value="Edit Row"/>
</f:facet>
<ui:include src="detail-page.xhtml" />
</rich:panel>
</h:panelGroup>
以下是详细信息-page.xhtml中的提交按钮代码:
<h:commandButton styleClass="button" value="#{bundle.SaveChangesButton}" action="#{pplSuspenseBean.performRecordSave}" />
如果我设置&#34;渲染=&#34;真实&#34;&#34;在我的editRowPanel上,一切正常,只有在基于条件的渲染时它才起作用。任何有关解决此问题的建议都将非常感谢,谢谢!
答案 0 :(得分:0)
我决定只使用CSS“display”属性来显示和隐藏我的面板,因为在这种情况下安全性不是很重要(只是一个输入表单,只有当用户是某个角色时才允许编辑) )。
我创建了一个CSS类来隐藏面板:
.nodisplay {
display: none;
}
然后我将h:panelGroup上的styleClass设置为“nodisplay”:
<h:panelGroup id="edit" styleClass="nodisplay">
<rich:panel id="editRowPanel" style="padding: 10px" >
<f:facet name="header">
<h:outputText value="Edit Row"/>
</f:facet>
<ui:include src="detail-page.xhtml" />
</rich:panel>
</h:panelGroup>
并更改了我的a4j:commandLink以删除此样式类onClick:
<a4j:commandLink value="#{tableData.itemNumber}" title="View/Edit Record Detail"
render="editRowPanel" oncomplete="RichFaces.$('pleaseWaitView:searchWaitPanel').hide()"
onclick="$(edit).removeClass('nodisplay');>
<f:setPropertyActionListener target="#{context.currentItem}" value="#{tableData}" />
</a4j:commandLink>
我在面板中还有另一个重新应用此样式类的链接,以便再次隐藏该面板。
这是我想要实现的目标的充分解决方案。