我正在尝试做类似的事情:
<h:form id="form">
<p:inputText id="input1" value="#{mb.input}" required="true" /><br />
<h:panelGroup id="panelGroup"><br />
<p:inputText id="input2" required="true" /><br />
<p:commandButton id="doSomething" value="something" action="#{mb.doSomething}" />
</h:panelGroup><br />
<p:commandButton id="save" value="Save" action="#{mb.save}" /><br />
</h:form>
以下是我的问题:当我点击save
按钮时,我希望整个表单在required="true"
input1
和input2
处得到验证,效果很好)。
但是,当我点击doSomething
按钮时,我希望仅在input2
填充时检查,忽略input1
的条件(换句话说:它应该不起作用如果input2
为空,但即使input1
是,也应该有效。有办法吗? (我不能使用Managed Beans!)
答案 0 :(得分:2)
使用process
这样的<p:commandButton>
属性
<p:commandButton id="doSomething" value="something" action="#{mb.doSomething}" process="input2"/>
这样它只会在点击时验证input2。根据Primefaces文档:
流程 | null |字符串|要部分处理的组件而不是 整个观点。
答案 1 :(得分:0)
只有立即=&#34; true&#34;属于面板内的两个组件。或者您也可以使用Ajax作为面板内的按钮,仅发送面板内容。
注1:面板内的输入声明了value
属性。
注意2:两个按钮都包含update
属性。即:
update="@form"
注3:您还可以在表单中包含<p:messages/>
元素。