在我的JSF页面中,当我单击同一页面中的提交按钮时,我需要显示静态内容。但是当我点击<p:commandbutton>
时,页面中没有任何内容。当我把ajax =“false”时,只有动作发生但静态内容显示在新页面中。
在我的Backing bean中,我使用了Session scoped。我正在使用JSF 2.0和Primefaces 3.2。
我的JSF页面。
<h:form>
<h:panelGroup rendered="#{not license.showForm}">
<p:panel header="License Key Request" >
<h:panelGrid columns="2" >
..
<h:outputText value="Bla bla"/>
..
<h:outputText value="Bla Bla" />
</h:panelGrid>
<TABLE>
..
<h:outputLabel for="name" value="Requestor Name : *" />
..
<p:inputText id="name" value="#{license.name}" required="true" requiredMessage="Name is required."/>
..
<h:outputLabel for="company" value="Company : * " />
..
<p:inputText id="company" value="#{license.company}" required="true" requiredMessage="Company is required."/>
..
</table>
<p:commandButton value="Form" id="btnAdd" process="@form"
action="#{license.add}" />
..
</table>
</p:panel>
</h:panelGroup>
<h:panelGroup rendered="#{license.showForm}" >
<h:outputText value="Bla Bla"/>
</h:panelGroup>
</h:form>
答案 0 :(得分:2)
您的源代码有些令人困惑(例如,您有两个结束table
标记)。但我假设您想要在单击按钮时在底部显示panelGroup。
最简单的方法是在commandButton中添加update ="@form"
:
<p:commandButton value="Form" id="btnAdd"
process="@form" update="@form"
action="#{license.add}" />
您无需更新整个表单,只需更新特定组件。然后,您需要为panelGroup指定一个id属性,并使用此属性而不是@form
。但是,由于我不清楚您的命名容器是如何组织的,因此找到正确的相对ID可能会令人费解。