在JSF中为非小数设置双精度格式
我有一个inputText,它从用户那里获取一个值,并绑定到一个double。如果值为“5000”,后续页面将显示为“5000.0”是否有任何方法将其格式设置为,如果用户输入非小数,它将不会显示小数? 示例:在JSF中为非小数设置双精度格式,jsf,format,double,converter,Jsf,Format,Double,Converter,我有一个inputText,它从用户那里获取一个值,并绑定到一个double。如果值为“5000”,后续页面将显示为“5000.0”是否有任何方法将其格式设置为,如果用户输入非小数,它将不会显示小数? 示例: 用户输入“5000” 显示“5000” 用户输入“5000.1” 显示“5000.1” 我尝试使用下面的f:convertNumber标记,但出现以下错误: java.lang.ClassCastException: 无法将java.lang.Long强制转换为 java.lang
用户输入“5000” 显示“5000”
用户输入“5000.1” 显示“5000.1”
我尝试使用下面的f:convertNumber标记,但出现以下错误:
java.lang.ClassCastException:
无法将java.lang.Long强制转换为
java.lang.Double
我不想更改任何Java代码。只有双。转换器的显示才会转换数字以供进一步使用。如果您想在与用户交互时添加特定行为,请尝试使用javascript“onkeyup”事件并使用提供的数据进行操作。演示文稿是特定于用户的,因此应该在服务器之外。如果找不到模式,您可以编写自己的
NumberConverter
扩展。我从未尝试过,但它的工作原理应该与此类似:
@FacesConverter(value="ExampleConverter")
public class ExampleConverter extends NumberConverter {
String getAsString(FacesContext context, UIComponent component,Object value) {
// call super.getAsString(...) and cut trailing .0
}
}
通过以下方式在facelet中使用转换器:
<h:inputText value="#{sessionScope.eventDO.area}" id="areaInTxtId">
<f:converter converterId="exampleConverter" />
</h:inputText>
<h:inputText value="#{sessionScope.eventDO.area}" id="areaInTxtId">
<f:converter converterId="exampleConverter" />
</h:inputText>