1

我想在 jsf 中用逗号格式化数字,例如:当我在文本字段中输入 100000 时,当我转到其他字段时,文本字段应显示 100,000。我知道它可以在 javascript 中完成,但我想知道它是否可以通过 jsf 内置函数来完成。我尝试使用 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 两个版本中进行操作。

4

2 回答 2

2

尝试:

<f:convertNumber pattern="###,###" />
于 2012-01-05T10:18:41.080 回答
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方法是你做相反事情的地方。

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

于 2012-01-05T10:36:47.010 回答