Обязательные поля Primefaces datatable не работают

Я бы создал проверку входной информации, указанной в: http://www.primefaces.org/showcase/ui/message/messages.xhtml

Я создаю dataTable с большим количеством обязательных полей (inputText с атрибутом required="true") и сообщением p: в раздел datatable. Проблема в том, что когда я нажимаю кнопку для сохранения данных: я не вижу предупреждающего сообщения на своей странице, но начинаю выполнение связанного компонента. Почему?

Мой код в .xhtml таков:

<h:form>  
<p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" />
<p:dataTable var="myAtt"
             value="#{myBean.attributes}"
             rowIndexVar="myAttIndex">
    <h:inputHidden value="#{myAtt.value}" rendered="#{myAtt.description == 'XXX'}" />
    <p:column rendered="#{myAtt.description == 'XXX'}">
        <h:outputText value="*" rendered="#{myAtt.required}" />  
    </p:column>
    <p:column rendered="#{ myAtt.description == 'YYY'">
        <p:fragment rendered="#{myAtt.description == 'ZZZ'">
            <p:fragment rendered="#{myAtt.value == 'value1'}">
                <p:inputText size="#{myAtt.maxLength}" 
                             value="#{myAtt.value}"
                             rendered="#{myAtt.const == 't1'}"
                             required="true"
                             id="idText">
                    <p:ajax process="@this" event="change" update="@form"/>
                </p:inputText>
                <p:message for="idText"/>
            </p:fragment>
        </p:fragment>
    </p:column>
</p:dataTable> 
<br />
<p:commandButton value="Create" action="#{myBean.commit()}" process="@this" update=":MYPAGE"/>

Спасибо.


person Diaboliko    schedule 31.08.2015    source источник
comment
Можете ли вы опубликовать свой код? Многое может пойти не так, и видя ваш код, мы избавляемся от необходимости догадываться, что пошло не так в вашем случае.   -  person uoyilmaz    schedule 31.08.2015
comment
Обновить вопрос. Спасибо   -  person Diaboliko    schedule 31.08.2015
comment
Вы понимаете, что со временем никто не хочет вам помогать здесь, так как вы никогда не проявляете никакой благодарности за помощь, которую оказывают люди? Очки бесплатны, вы знаете   -  person Jaqen H'ghar    schedule 06.05.2016


Ответы (1)


Вы забыли указать идентификатор для h:form : <h:form id="myForm">

И в обновлении p:commandButton вы должны указать идентификатор формы: update=":MYPAGE :myForm"

ИЗМЕНИТЬ

Согласно руководству пользователя PrimeFaces 3.5, атрибут action будет вызываться, когда пользователь нажимает кнопку.

командная кнопка

person Stéphane Eintrazi    schedule 31.08.2015
comment
Не работает. Вызов всегда bean в кнопке создания, и я не вижу предупреждающих сообщений... - person Diaboliko; 31.08.2015
comment
В вашем коде нет конечного тега </h:form> для <h:form>, вы забыли его в своем посте? - person Stéphane Eintrazi; 31.08.2015
comment
Я забыл в своем посте. Теперь это работает, я удалил глобальные p:message в голове и установил только ‹p:message for=.../› для каждого компонента. - person Diaboliko; 31.08.2015
comment
Я заметил, что мой commandButton всегда вызывается, даже если есть предупреждающие сообщения. Почему? И тогда значение атрибута, требуемое в моем dataTable, создается с нулевым значением или , поэтому PrimeFaces считает его значимым и не показывает предупреждающее сообщение. - person Diaboliko; 31.08.2015
comment
Рад, что это работает для вас. Атрибут action будет вызываться, даже если это какие-то предупреждающие сообщения (я отредактировал свой пост). - person Stéphane Eintrazi; 31.08.2015