Ajax не работает с h: inputSecret - PullRequest
2 голосов
/ 15 марта 2011

Попытка отобразить Обязательное сообщение для поля пароля, однако оно не работает с Ajax, после ввода пароля оно исчезает.
В настоящее время это выполняется исключительно обязательно свойство h:inputSecret, однако Ajax был бы намного лучше перед отправкой HTTP.
Соответствующий фрагмент:

<h:inputSecret id="newPassword"
               value="#{changePassword.password}"
               autocomplete="off"
               required="true"
               requiredMessage="#{i18n['javax.faces.component.UIInput.REQUIRED']}">
          <f:ajax event="blur"
                  render="@this Password_Message"/>
</h:inputSecret>
<h:message id="Password_Message" for="newPassword" errorClass="error"
           tooltip="true" />

Ответ с иллюстративным объяснением того, почему это происходит, таков:очень ценится, все еще изучаю JSF 2.0:)

1 Ответ

3 голосов
/ 15 марта 2011

Вы добавили render="@this" к элементу ввода, который приводит к тому, что весь элемент ввода будет перерисован после завершения запроса ajax.По умолчанию значения <h:inputSecret> не отображаются повторно после отправки формы по соображениям безопасности.Документация тега также сообщает об этом буквально:

Отображать текущее значение компонента в качестве значения атрибута «value», если и только если атрибут компонента «redisplay»это строка "true".

Та же самая история применима к рендерингу ajax полей <h:inputSecret>.Однако вы можете вызвать повторное отображение, добавив redisplay="true".

<h:inputSecret redisplay="true">
    <f:ajax event="blur" render="@this messageid" />
</h:inputSecret >

Или просто избавиться от render="@this", потому что это по сути совершенно не нужно.

<h:inputWhatever>
    <f:ajax event="blur" render="messageid" />
</h:inputWhatever>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...