【问题标题】:Need <f:convertNumber> to throw error when fractions or separator characters are used使用分数或分隔符时需要 <f:convertNumber> 抛出错误
【发布时间】:2013-02-13 07:43:52
【问题描述】:

我有一个 InputText 组件连接到 int 类型的 Bean 属性。 但是,我只能使用NumberConverter

即使我指定integerOnly = true,它也会通过删除小数部分来接受双精度,并且在验证阶段不会引发错误

我的问题是,NumberConverter 有没有办法抛出转换异常和错误消息(最好是客户端,我的意思是,当我跳出字段时)

我们使用的是 JSF 1.2

(实际上,NumberConverter 的 getAsObject() 有这段代码,当精度丢失时从 BigDecimal 转换为 Integer 时应该抛出异常

GenericConverterFactory fac = GenericConverterFactory .getCurrentInstance();
      try
      {
        value = fac.convert(value, expectedType);
      }

)

【问题讨论】:

  • 如果你调试它会发生什么?

标签: jsf converter


【解决方案1】:

创建一个扩展默认 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" />

【讨论】:

    猜你喜欢
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    相关资源
    最近更新 更多