Игнорировать проверку при нажатии кнопки JSF

0

У меня есть кнопка сброса, и при нажатии это приведет к тому, что f: converter и f: validate будут запущены, что сделало это так, поскольку оно предназначено для очистки полей.

Я читал эту статью, и она продемонстрировала, как сохранить подтверждение, когда я нажимаю на кнопку "Сброс", используя immediate="true" и это отлично работает... только для первой кнопки сброса.

Тем не менее, у меня есть несколько кнопок сброса и все их атрибуты имеют атрибут immediate="true" и все же он работает только на первой кнопке сброса, я все еще получаю сообщение об ошибке для недопустимых данных для остальных 3 кнопок сброса.

В случае необходимости использования фонового рисунка мой XHTML выглядит примерно так:

<a4j:outputPanel ajaxRendered="true">
    <h:messages globalOnly="true" showDetail="false" infoClass="info" warnClass="warning" errorClass="error" fatalClass="fatal" />
        <h:message for="field1" errorClass="error"></h:message>
        <h:message for="field2" errorClass="error"></h:message>
        <h:message for="field3" errorClass="error"></h:message>
        <h:message for="field4" errorClass="error"></h:message> 
</a4j:outputPanel>
<h:form id="form1" rendered="true">
    <h:panelGrid columns="8">
        <h:outputText value="#{bundle.label}" />
        <h:inputText id="field1" size="18" maxlength="18" immediate="true"
            value="#{myBean.myField1}">
            <f:converter converterId="LongConverter" />
            <f:validateLength minimum="1" maximum="18"></f:validateLength>
        </h:inputText>
    </h:panelGrid>
    <h:commandButton id="reset1" type="submit" value="#{bundle.label}" onclick="resetField()"
        styleClass="button" action="#{myBean.reset1}" immediate="true" />
</h:form>
<h:form id="form2" rendered="true">
    <h:panelGrid columns="8">
        <h:outputText value="#{bundle.label}" />
        <h:inputText id="field2" size="18" maxlength="18" immediate="true"
            value="#{myBean.myField2}">
            <f:converter converterId="LongConverter" />
            <f:validateLength minimum="1" maximum="18"></f:validateLength>
        </h:inputText>
    </h:panelGrid>
    <h:commandButton id="reset2" type="submit" value="#{bundle.label}" onclick="resetField()"
        styleClass="button" action="#{myBean.reset2}" immediate="true" />
</h:form>
<h:form id="form3" rendered="true">
    <h:panelGrid columns="8">
        <h:outputText value="#{bundle.label}" />
        <h:inputText id="field3" size="18" maxlength="18" immediate="true"
            value="#{myBean.myField3}">
            <f:converter converterId="LongConverter" />
            <f:validateLength minimum="1" maximum="18"></f:validateLength>
        </h:inputText>
    </h:panelGrid>
    <h:commandButton id="reset3" type="submit" value="#{bundle.label}" onclick="resetField()"
        styleClass="button" action="#{myBean.reset3}" immediate="true" />
</h:form>
<h:form id="form4" rendered="true">
    <h:panelGrid columns="8">
        <h:outputText value="#{bundle.label}" />
        <h:inputText id="field4" size="18" maxlength="18" immediate="true"
            value="#{myBean.myField4}">
            <f:converter converterId="LongConverter" />
            <f:validateLength minimum="1" maximum="18"></f:validateLength>
        </h:inputText>
    </h:panelGrid>
    <h:commandButton id="reset4" type="submit" value="#{bundle.label}" onclick="resetField()"
        styleClass="button" action="#{myBean.reset4}" immediate="true" />
</h:form>

Я действительно не знаю, проблема в том, что кнопка или ajax разделяются несколькими формами? Может ли кто-нибудь сказать мне правильный способ сделать это, когда есть несколько кнопок/полей сброса, например, выше?

Изменить: я попытался удалить все немедленные = истинные с кнопок Сброс, и, конечно, сообщение об ошибке теперь отображается при нажатии кнопки "Сброс". Но я заметил, что он делает это только на последних трех путях сброса, а не на первом...?

Я надеюсь, что это даст больше понимания кому-то, кто знает, что вызывает это

  • 0
    Какова цель type = "submit"?
  • 0
    @Tires Шины Я предполагаю, что необходимо вызвать базовый компонент myBean.methodName для атрибута action = ""? Не стесняйтесь поправлять меня, если я ошибаюсь
Показать ещё 3 комментария
Теги:
jsf
richfaces

1 ответ

0
Лучший ответ

У вас есть immediate="true" в полях ввода, что также делает их обработанными.

  • 0
    Я попытался удалить немедленное = "true" из всех входных текстовых полей, и это действительно решает проблему с сообщением об ошибке, появляющимся, когда это не должно, но теперь это не очистит значения входного текстового поля?
  • 0
    Я попытался удалить все немедленные = true из кнопок сброса, и, конечно, сообщение об ошибке теперь отображается при нажатии кнопки сброса. Но я заметил, что он делает это только на последних трех кнопках сброса форм, а не на первых ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню