问题
我正在尝试验证强制性 GET 请求参数。
在视图中,我添加了相应的 viewParam 标记。
<f:metadata>
<f:viewParam name="customerId" value="#{customerDetailBean.customerId}"/>
</f:metadata>
我的 CDI bean 看起来像这样
@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.Final
- 休眠验证器 5.1.1.Final
- 雄猫 7.0.54
web.xml
<context-param>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-value>true</param-value>
</context-param>