Почему валидатор не вызывается? - PullRequest
1 голос
/ 17 октября 2011

В моей заявке у меня есть следующая форма

<h:form id="addItemForm" enctype="multipart/form-data">                      
    <h:panelGrid columns="3" border="1">
        <h:outputText value="Name: " />
        <h:inputText label="name" 
                     id="name" value="#{addItem.name}" 
                     required="true" requiredMessage="Name is required." />
        <h:message styleClass="errorMsg" for="name" />

        <h:outputText value="Description: " />
        <h:inputText label="description" 
                     id="description" value="#{addItem.description}" 
                     required="true" requiredMessage="Description is required." />
        <h:message styleClass="errorMsg" for="description" />

        <h:outputText style="font-weight: bold" value="Picture : " />
        <t:inputFileUpload label="picture" 
                           id="picture" value="#{addItem.picture}" 
                           required="true" requiredMessage="Picture is required." />
        <h:message styleClass="errorMsg" for="picture" />

    </h:panelGrid>
    <h:commandButton value="Confirm" actionListener="#{addItem.addItem}"/>
    <h:outputText id="status" value="#{addItem.statusMsg}" />
</h:form>

Если я введу описание и оставлю имя пустым и нажму кнопку Подтвердить, я не вижу сообщения об ошибке для отсутствующегоназвание.Одна странная вещь в том, что моя страница обновляется, потому что все, что я набрал для описания, пропало.Кроме того, даже если я набрал имя и описание, функция addItem в actionListener никогда не вызывалась.

Вчера все работало.Я был бы очень признателен, если бы кто-то мог сказать мне, что я мог сделать неправильно здесь.

1 Ответ

2 голосов
/ 17 октября 2011

Удалить enctype="multipart/form-data". JSF не имеет встроенной поддержки для этого. JSF полагается, что отправленные параметры запроса доступны как application/x-www-form-urlencoded, что уже является кодировкой формы по умолчанию. В вашей форме также нет полей <input type="file"> (ни простых, ни представленных сторонним компонентом JSF), поэтому вам вообще не нужна кодировка multipart/form-data.

Возможно, это работало и раньше, потому что у вас был фильтр, предоставленный какой-то сторонней библиотекой компонентов, который анализирует и подготавливает multipart/form-data запросы на JSF, но вы удалили его из web.xml или не включили его в свой новый проект.


Обновление : вы отредактировали вопрос, включив в него <t:inputFileUpload>. Хорошо, вы должны оставить enctype="multipart/form-data". Единственная причина, по которой форма вообще не отправляется, может заключаться в том, что ExtensionsFilter был удален из web.xml или не был инициализирован. Добавьте его и / или прочитайте журналы запуска веб-приложения. Это тот, кто отвечает за анализ multipart/form-data запросов в пригодные для использования параметры для JSF. Другая возможная причина заключается в том, что вы вложили несколько <h:form> компонентов друг в друга, что приведет к созданию некорректного HTML. См. Также commandButton / commandLink / ajax действие / метод прослушивателя не вызван или входное значение не обновлено .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...