我有一些h:inpuText
字段来保存数字。所有十进制值都以“。”显示。作为分隔符,虽然我在 faces-config.xml 中有以下条目:
<locale-config>
<default-locale>de</default-locale>
</locale-config>
和电话
FacesContext.getCurrentInstance().getViewRoot().getLocale()
返回“de”。
但是,如果我向<f:convertNumber/>
添加h:inputText
,则会显示正确的小数分隔符(例如6,2而不是6.2)。
我是否必须将f:convertNumber
添加到我的所有输入字段中,或者没有办法吗?
感谢您的帮助!
答案 0 :(得分:2)
默认格式是浮点数的toString
格式。
考虑bean属性foo
:
public class MyBean implements Serializable {
private double foo;
public double getFoo() { return foo; }
public void setFoo(double foo) { this.foo = foo; }
}
inputText
对数字类型没有任何直接支持;它将被赋予一个对象(java.lang.Double
)并在输出上调用toString
。在表单提交上,浏览器发送String
并且表达式语言根据其类型强制规则将其强制转换为双精度(参见EL规范)。
对于更复杂的逻辑,需要转换器。这是一个功能强大的模型,因为您可以转换为/从任何类型转换,而无需输入/输出控件来支持转换。