Как сохранить параметры просмотра JSF через проверку - PullRequest
3 голосов
/ 24 октября 2011

Я использую JSF 2.0 / CDI и PrimeFaces 2.2.1 для ряда форм CRUD, которые позволяют пользователю просматривать или обновлять атрибуты существующей сущности, щелкая ссылку в таблице данных, где идентификатор сущности равен передается в форму CRUD в качестве параметра просмотра. Я отображаю идентификатор сущности (часто просто целое число) в форме CRUD в поле PrimeTaces InputText с атрибутом readonly, установленным в значение true (поскольку я не могу позволить им изменить его), чтобы пользователь знал, какую сущность он редактирует. Основным компонентом формы CRUD является RequestScoped, который отлично работает, за исключением случаев, когда проверка не проходит. В этом случае значение параметра просмотра теряется, поэтому в поле идентификатора объекта отображается 0 при ошибке проверки.

Я могу сохранить действительный идентификатор объекта в скрытом поле, чтобы он мог обновлять базу данных после успешного завершения проверки, но довольно прискорбно, что я не смог найти способ сохранить значение в видимом поле какой-то после неудачной проверки. В идеале поле InputText сохранит свою функциональность в качестве введенного и проверенного поля, даже если его атрибут readonly (или отключен) имеет значение true, что позволило бы мне полностью отказаться от скрытого поля. Но не похоже, что я могу заставить это работать таким образом. Какие-либо предложения помимо создания вспомогательного компонента ConversationScoped, которых я бы предпочел избегать?

1 Ответ

1 голос
/ 24 октября 2011

На самом деле, после того, как в поиске Google я несколько по-другому изложил то, что мне нужно, я нашел по ссылке ниже новое предложение, которое, кажется, работает нормально.Вместо того, чтобы делать поле идентификатора объекта доступным только для чтения или отключенным, я оставляю его включенным, но размываю его, как только оно получает фокус.Я могу избавиться от скрытого поля, пользователь не может изменить значение, и оно переживает ошибку проверки.

<p:inputText id="entid" value="#{RequestBean.entityID}" onfocus="blur();" />

http://www.codingforums.com/archive/index.php/t-1738.html

...