#jsf #bean-validation
#jsf #проверка компонента
Вопрос:
Мне интересно, возможно ли обойти валидаторы bean для определенных действий в JSF2.
Я сгенерировал объекты из моей схемы БД, используя NetBeans 7, которые включают атрибуты проверки.
В моем приложении JSF у меня есть экран поиска того, кто поддерживает компонент, использующий экземпляр объекта для хранения параметров запроса пользователя. Затем я использую отражение в экземпляре объекта для генерации динамического запроса для выполнения пользовательского поиска. Как только пользователь выполнит поиск, он может выбрать элемент и перейти на страницу редактирования, где я бы хотел, чтобы проверка была принудительной.
Моя проблема в том, что на экране поиска принудительно выполняется проверка компонента для моего объекта. Итак, если у моего объекта есть 3 обязательных поля, а пользователь выполняет поиск только в 1 из 3, я получаю два сообщения об ошибке «поле обязательно».
Я знаю, что мог бы обойти это, создав новый класс для моего компонента поддержки поиска, в котором нет аннотаций проверки, но мне это не кажется идеальным решением: в итоге я получил бы два по существу идентичных класса, просто с разными аннотациями.
Ответ №1:
Вы могли бы добавить f:validateBean с отключенным = «true» в свою первую форму, где вы не хотите, чтобы они проверялись, а затем не включать это в представление, где вы делаете:
<h:inputText value="#{entity.property}">
<f:validateBean disabled="#{true}"/>
</h:inputText>
Ответ №2:
для меня в icefaces так не работало: мне пришлось :
<f:validateBean disabled="true" >
<ice:outputText value="#{messages['busqueda.bodega.tabla.datos.etiqueta.nombre']}"/> <ice:inputText" value="#busquedaBodegaBean.busquedaBodegaBB. bodegaCriterio.nombre}">
</ice:inputText>
</f:validateBean>
Комментарии:
1. <f: validateBean отключен =»true» > <ice: значение outputText=»#{сообщения[‘busqueda.bodega.tabla.datos.etiqueta.nombre’]}»/> <ice: значение inputText=»#busquedaBodegaBean.busquedaBodegaBB. bodegaCriterio.nombre}»> </ice:inputText> </f:validateBean> ————————- работает для меня (mojarra), но в чем разница между этим ответом и ответом Дейва? ————————- < h: значение входного текста=»#{entity.property}»> <f:validateBean отключен =»#{true}»/> </h: входной текст>