当用户在<h:inputtext> </h:inputtext>中失去焦点时,如何用逗号格式化数字

时间:2012-01-05 10:00:22

标签: jsf-2 numbers format jsf-1.2 comma

我想在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这两个版本。

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方法是你做相反事情的地方。

我会让你自己弄清楚如何在客户端脚本中添加,。希望这有帮助!