哎呀!听起来您被迫在旧的应用服务器上使用 JSF 1.2,例如 WebSphere Application Server v6.1。
您可以使用标准的 BigDecimalConverter:
<f:converter converterId="javax.faces.BigDecimal" />
但是,您可能会发现该转换器受到限制,具体取决于您的需要。如果是这样,那么最好编写自己的自定义转换器。
因此,请继续阅读以了解如何创建自己的转换器类。
创建您的转换器类:
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
@FacesConverter("bigDecimalConverter")
public class BigDecimalConverter implements Converter {
...override and implement the required interface methods here
}
要使用您的自定义转换器,您可以使用:
<h:inputText value="#{someBean.field}" converter="bigDecimalConverter"/>
或者:
<h:inputText value="#{someBean.field}">
<f:converter converterId="bigDecimalConverter"/>
</h:inputText>
我已经很长时间没有使用 JSF 1.2,但是注释有可能是 JSF 2.0 约定。如果是这样,您必须以老式方式注册自定义转换器:faces-config.xml:
<converter>
<description>
Some description here (optional)
</description>
<converter-id>bigDecimalConverter</converter-id>
<converter-class>
com.companyname.project.converters.BigDecimalConverter
</converter-class>
</converter>
参考:
Java EE 5 BigDecimalConverter
注册自定义转换器
Java EE 5 标准转换器