我想在jsf中用逗号格式化数字 例如:当我在文本字段中输入100000时,当我进入其他字段时,文本字段应显示100,000。 我知道它可以在javascript中完成,但我想知道它是否可以通过jsf build in function来完成。我尝试使用groupingUsed =“true”,但仍然不适合我。
这是我的一些jsf代码:
<h:outputLabel for="testing" value="testing ID *" />
<h:inputText id="testing" required="true" label="testing" value="#{user.testing}" style="width:200px" >
<f:convertNumber groupingUsed="true" for="testing" />
</h:inputText>
编辑:我想知道如何在jsf 1.2和jsf 2这两个版本。
答案 0 :(得分:2)
尝试:
<f:convertNumber pattern="###,###" />
答案 1 :(得分:0)
如果没有JSF 2.0的Ajax功能,我认为你应该结合使用客户端JavaScript和JSF Converter
。客户端脚本将是这样的:
<script type="text/javascript">
function convertFormat() {
// function to add comma
}
</script>
<h:inputText id="testing" required="true" label="testing" value="#{user.testing}" style="width:200px" onblur="convertFormat();" />
在服务器端,您应该有一个Converter
来获取原始号码:
@FacesConverter("converter.numberFormatConverter")
public class NumberFormatConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
value = value.replaceAll(",", "");
return Long.parseLong(value);
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
// add back the comma
}
}
您的getAsObject
方法是您从HTML的输入文本转换为您想要的输入类型的地方(我在我的示例中使用了Long
)。 getAsString
方法是你做相反事情的地方。
我会让你自己弄清楚如何在客户端脚本中添加,
。希望这有帮助!