我有一个InputText
组件连接到int类型的Bean属性。
但是,我被迫只使用NumberConverter
即使我指定integerOnly = true
,它也会通过删除小数部分来接受双打,并且在验证阶段不会引发任何错误
我的问题是,NumberConverter
是否有办法抛出转换异常和错误消息(最好是客户端,我的意思是,当我跳出字段时)
我们正在使用JSF 1.2
(实际上,NumberConverter的getAsObject()有这个代码,当精度损失时,从BigDecimal转换为Integer时应抛出异常
GenericConverterFactory fac = GenericConverterFactory .getCurrentInstance();
try
{
value = fac.convert(value, expectedType);
}
)
答案 0 :(得分:4)
创建一个自定义转换器,扩展默认NumberConverter
,其中您在委派给NumberConverter
之前检查字符串值,然后再使用它。
public class MyNumberConverter extends NumberConverter {
public MyNumberConverter() {
setIntegerOnly(true);
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) {
if (submittedValue != null && !submittedValue.matches("[0-9]+")) {
throw new ConverterException("Please enter digits only");
}
return super.getAsObject(context, component, submittedValue);
}
}
<f:converter converterId="myNumberConverter" />