Из стековой трассировки:
at com.myapp.beans.DepartmentBean.addOrUpdateDepartment(DepartmentBean.java:105)
...
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
Это означает, что ваш метод действия JSF-компонента вызывается в любом случае, в то время как он должен был быть заблокирован ограничениями проверки в пустом поле name
, и вы должны были увидетьошибка проверки в <h:message>
или <h:messages>
формы.
Это может означать только то, что вы положили immeditate="true"
на командную кнопку / ссылку, что вызовет все компоненты ввода, которые не имеютэтот атрибут будет пропущен при обработке формы:
<h:commandButton ... immediate="true" />
или что у вас есть этот параметр контекста в вашем web.xml
, который пропустит проверку пустых полей:
<context-param>
<param-name>javax.faces.VALIDATE_EMPTY_FIELDS</param-name>
<param-value>false</param-value>
</context-param>
или чтовы отключили проверку bean-компонента в своем представлении с помощью следующего тега:
<f:validateBean disabled="true" />
Убедитесь, что у вас нет ни одного из них.
Обновление : какв своем обновлении вы допустили классическую ошибку: вы поместили кнопку отправки в форме, отличной от полей ввода.Кнопка отправки должна быть в той же форме, что и поля ввода, которые вы хотите отправить вместе с отправкой.