【问题标题】:JSF input failed to Double conversion errorJSF 输入失败到 Double 转换错误
【发布时间】:2011-12-18 20:26:43
【问题描述】:

我有一个使用 Spring 3.0 的 JSF2 应用程序。我有一个具有 List<Double> 类型属性的 bean,其中包含 5 个元素:

public class MyBean {
    private List<Double> values; 
    public List<Double> getValues() {
        if (values == null) {
            values = new ArrayList<Double>(5);
                for (int i = 0; i < 5; i++) {
                    values.add(null);
                }
        }
        return values;
    }
    public void setValues(List<Double> values) {
        this.values = values;
    }
}

在我的 xhtml 文件中,每个元素都有这个:

<h:inputText id="value1" value="#{myBean.values[0]}">
    <f:convertNumber pattern="#########0.##" />
</h:inputText>

我的目的是将值检索为ArrayList。另外,我不想为每个成员保留单独的属性。未来的要求将使值的总数是动态的(而不是硬编码的 5),所以我可能会使用循环来定义每个元素的输入,但现在不要关注这个。

所以这就是问题所在。当我提交页面时,转换不正确。例如,如果我的输入是 1、2.0、3(最后两个元素的 2 个空输入,它们不是强制性的),我将收到以下数组 [1, "2.0", 3, "", ""] ,其中 1 和 3 是 BigDecimal 类型,而 2.0 和最后 2 个成员是空字符串。每次我尝试获取数组列表的成员时,这都会导致ClassCastexception,因为根据定义是泛型的,泛型类型是DoubleBigDecimal 不能转换为 Double;很明显,字符串转换尝试也会失败。现在,我希望至少所有成员都被转换器转换并且属于同一类型。另外,我需要一种方法来正确地成为 Double。我还尝试了以下方法:

<h:inputText id="value1" value="#{myBean.values[0]}">
    <f:converter id="javax.faces.Double" />
</h:inputText>

但是却引发了异常:

&lt;f:converter&gt; Default behavior invoked of requiring a converter-id passed in the constructor, must override ConvertHandler(ConverterConfig)

我必须承认我是 JSF 技术的新手,但就this 文章而言,没有必要重写任何内容。任何帮助将不胜感激

【问题讨论】:

    标签: java validation jsf-2


    【解决方案1】:

    &lt;f:converter&gt; 没有id 属性,而是converterId。另请参阅tag documentation。所以,应该这样做:

    <h:inputText id="value1" value="#{myBean.values[0]}">
        <f:converter converterId="javax.faces.Double" />
    </h:inputText>
    

    甚至

    <h:inputText id="value1" value="#{myBean.values[0]}" converter="javax.faces.Double" />
    

    【讨论】:

    • 是的,确实是 convertedId 我得到了它的工作。不幸的是,我被上面提供的网址误导了。感谢您的快速回答。
    猜你喜欢
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 2020-09-13
    相关资源
    最近更新 更多