Проблема
Я пытаюсь проверить обязательный параметр запроса GET.
В представлении я добавил соответствующий тег viewParam.
<f:metadata>
<f:viewParam name="customerId" value="#{customerDetailBean.customerId}"/>
</f:metadata>
И мой компонент CDI выглядит так
@Model
public class CustomerDetailBean {
@NotNull
private Integer customerId;
public Integer getCustomerId() {
return customerId;
}
public void setCustomerId(Integer customerId) {
this.customerId = customerId;
}
}
Когда я использую следующий запрос, проверка работает нормально, и отображается ожидаемое сообщение проверки.
http://localhost:8080/getsupport/customerdetail.jsf?customerId=
Однако, когда я изменяю запрос, удаляя параметр customerId, проверка пропускается и сообщение не отображается.
http://localhost:8080/getsupport/customerdetail.jsf
Есть ли способ заставить его работать так, как ожидалось?
Временное решение
Я изменил объявление viewParam на
<f:metadata>
<f:viewParam name="customerId" value="#{customerDetailBean.customerId}" required="true" />
</f:metadata>
Эта обновленная версия отлично работает со вторым запросом. В любом случае я бы предпочел использовать проверку bean.
Мои настройки
- Мохарра JSF 2.2.7
- Сварка 2.2.1.Окончательная
- Hibernate Validator 5.1.1.Final
- Томкэт 7.0.54
веб.xml
<context-param>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-value>true</param-value>
</context-param>