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