命令按钮检查一些必填字段但不是全部

CommandButton that checks some required fields but not all of them

我正在尝试做类似的事情:

<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" 处验证整个表单(对于 input1input2,这工作正常)。

但是,当我点击 doSomething 按钮时,我希望它只检查 input2 是否被填充,忽略 input1 的条件(换句话说:它应该'如果 input2 为空则不工作,但即使 input1 为空也应该工作)。有办法吗? (而且我不能为此使用托管 Bean!)

仅将 immediate="true" 属性添加到面板内的两个组件。或者您也可以使用 Ajax 作为面板内的按钮,仅发送面板内容。

注意 1:面板内的输入要求 value 属性。

注意 2:还包括两个按钮的 update 属性。即:

    update="@form"

注意 3:您还可以在表单中包含 <p:messages/> 元素。

像这样使用 <p:commandButton>process 属性

<p:commandButton id="doSomething" value="something" action="#{mb.doSomething}"  process="input2"/>

这样它只会在点击时验证 input2。根据 Primefaces 文档:

process | null | String | Component(s) to process partially instead of whole view.