Почему компоненты другой формы проверяются с помощью JSF 2.3?

Я только что обновился до JSF 2.3 и Wildfly 14 (с 2.0 и 13) и простых лиц 6.2.5.

Я заметил странное поведение, когда я использую командную кнопку. У меня есть 2 формы, и когда вы нажимаете кнопку первой формы, проверяется ввод второй формы, и ошибка (в данном случае требуемые ошибки) отображается в сообщении p:

<h:form id="form1" prependId="false">
    <p:commandButton id="save" value="Save" actionListener="#{myBean.save()}" update="@form">
        <f:actionListener binding="#{myBean.reloadResults()}" />
    </p:commandButton>
    <p:messages id="msgs" severity="error,warn" escape="false">
        <p:autoUpdate />
    </p:messages>
...     
</h:form>

<p:dialog >
    <h:form id="form2" >
        <p:messages severity="error,warn" escape="false">
            <p:autoUpdate />
        </p:messages>
        <div>
            <p:calendar id="myDate" value="#{myBean.myDate}" required="true" />
        </div>
        ...     
    </h:form>
</p:dialog>

Я ожидал, что будет обработано и проверено только содержимое первой формы. Так было с wildfly 13 и jsf 2.0.

Есть идеи?


person jobe    schedule 29.10.2018    source источник
comment
Избавьтесь от prependId="false". Это плохая практика. Затем повторите попытку.   -  person BalusC    schedule 29.10.2018


Ответы (2)


Вы не указали процесс атрибута в своей командной кнопке. Значение по умолчанию — @all, которое будет проверять все формы. Пожалуйста, используйте process="@form", чтобы избежать проверки и обработки другой формы.

Обновленный код выглядит следующим образом:

<p:commandButton id="save" value="Save" actionListener="#{myBean.save()}" update="@form" process="@form">
        <f:actionListener binding="#{myBean.reloadResults()}" />
    </p:commandButton>
person Avanish    schedule 31.10.2018

Я должен извиниться за то, что не опубликовал весь код, но он был бы слишком большим. Я узнал, в чем проблема. Это связано с этим багом:

https://github.com/primefaces/primefaces/issues/4122

У меня есть панельная сетка из 4 столбцов, но с 10 элементами.

Затем вся ajax-связь была прервана. Исправление выходит в PF 6.3

person jobe    schedule 31.10.2018
comment
Вы никогда не должны публиковать «весь код», но всегда создавайте минимально воспроизводимый пример... То есть в 99,9% pf дела никогда не бывают большими.,,, - person Kukeltje; 31.10.2018