我有一个inputText,它从用户获取一个值并绑定到double。如果值为“5000”,则后续页面将显示为“5000.0”。 有没有办法对其进行格式化,以便用户输入非小数时,它不会显示小数?
实施例:
用户输入“5000”
显示“5000”
用户输入“5000.1”
显示“5000.1”
<h:inputText value="#{sessionScope.eventDO.area}" id="areaInTxtId">
<f:convertNumber pattern="###0"/>
</h:inputText>
我尝试过使用下面的f:convertNumber标签,但是我收到了这个错误:
java.lang.ClassCastException: java.lang.Long无法强制转换为 java.lang.Double中
我不想改变任何Java代码。只有双重的呈现。
答案 0 :(得分:1)
如果找不到模式,可以编写自己的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>
答案 1 :(得分:0)
转换器只会将数字转换为进一步使用。如果要在与用户交互时添加特定行为,请尝试使用javascript“onkeyup”事件并使用提供的数据进行操作。演示文稿是特定于用户的,因此应位于服务器之外。