【问题标题】:Managing Required=true in JSF [duplicate]在 JSF 中管理必需 = true [重复]
【发布时间】:2016-03-16 15:33:17
【问题描述】:

我的页面中有两个面板网格。

  • 在第一个面板网格中,我有两个带有按钮的输入文本。这个 按钮应该只对这个输入文本有效。

  • 在第二个面板网格中,我有 3 个带有按钮的输入文本
    应该只验证这 3 个文本。

    如何确保在第一个 panelgrid 中单击按钮时, 对于第二个面板网格中的所有元素,required=true 都会被忽略。

    任何帮助将不胜感激。

【问题讨论】:

标签: jsf jsf-2 requiredfieldvalidator


【解决方案1】:

如果您使用 Primefaces,您可以使用 partial submit。 以您为例:

<h:form>
        <p:panelGrid id="grid1">
            <p:inputText required="true" id="inp1" value="#{test.value1}"/>
            <p:inputText required="true" id="inp2" value="#{test.value2}"/>
            <p:commandButton partialSubmit="true" process="@this inp1 inp2" action="#{test.someAction()}" value="validation"  update="grid1"/>
        </p:panelGrid>
        <p:panelGrid id="grid2">
            <p:inputText required="true" id="inp3" value="#{test.value3}"/>
            <p:inputText required="true" id="inp4" value="#{test.value4}"/>
            <p:inputText required="true" id="inp5" value="#{test.value5}"/>
            <p:commandButton partialSubmit="true" process="@this inp3 inp4 inp5" action="#{test.someAction()}" value="validation" update="grid2"/>
        </p:panelGrid>
    </h:form>

或者您可以使用单独形式的按钮来放置网格。因为默认情况下,ajax 请求仅从当前表单发布(并验证)值。

    <h:form>
        <p:panelGrid id="grid1">
            <p:inputText required="true" id="inp1" value="#{test.value1}"/>
            <p:inputText required="true" id="inp2" value="#{test.value2}"/>
            <p:commandButton action="#{test.someAction()}" value="validation"  update="@form"/>
        </p:panelGrid>
    </h:form>
    <h:form>
        <p:panelGrid>
            <p:inputText required="true" id="inp3" value="#{test.value3}"/>
            <p:inputText required="true" id="inp4" value="#{test.value4}"/>
            <p:inputText required="true" id="inp5" value="#{test.value5}"/>
            <p:commandButton  action="#{test.someAction()}" value="validation" update="@form"/>
        </p:panelGrid>
    </h:form>

【讨论】:

  • 所需的行为不是特定于partialSubmit,而是特定于process。另见stackoverflow.com/questions/25339056/…
  • 感谢 Artem 和 Balus 为您提供宝贵的 cmets。我能够通过在按钮单击时将所需属性动态设置为 true 来解决此问题。
猜你喜欢
  • 1970-01-01
  • 2015-07-09
  • 2016-01-17
  • 2017-03-13
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
相关资源
最近更新 更多