每当我们使用输入文本作为十进制值时,我们会这样做:
<h:inputText id="valMin" tabindex="4" required="false"
maxlength="10" styleClass="valorMinimoMaximo"
value="#{actionGeneralidadeUnidadeCalculo.valorMinimoTransiente}"
size="10" label="ValorMinimo">
</h:inputText>
valorMinimoTransiente
是一个字符串,当它转到操作时,我会将其转换为BigDecimal
。
我这样做是因为我们的十进制数字有逗号而不是点,当你尝试转换像
这样的东西时4,56
要BigDecimal
,它会出现例外情况。
那么,如果没有这整个过程,那么有一种获得BigDecimal
值的方法吗?
顺便说一句,我正在运行jsf 1.2和richfaces 3.3.3。
答案 0 :(得分:1)
糟糕!听起来你被迫在旧的应用服务器上使用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>
参考文献: