Вы добавили 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>