как отформатировать число запятой, когда пользователь потерял фокус в - PullRequest
1 голос
/ 05 января 2012

Я хочу отформатировать число с запятой в jsf, например: когда я набираю 100000 в текстовом поле и когда я иду в другое поле, текстовое поле должно отображать 100000.Я знаю, что это можно сделать в javascript, но мне интересно знать, можно ли это сделать с помощью встроенной функции jsf.Я пытаюсь использовать with 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 ]

2 голосов
/ 05 января 2012

попробовать:

<f:convertNumber pattern="###,###" />
0 голосов
/ 05 января 2012

Без возможности Ajax в JSF 2.0, я думаю, вам следует использовать комбинацию клиентского 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 method - это место, где вы можете преобразовать текст ввода HTML в тип ввода, который вы хотите (я использовал Long в моем примере).Метод getAsString - это место, где вы можете поступить противоположным образом.

Я позволю вам самостоятельно разобраться, как добавить , в сценарий на стороне клиента.Надеюсь, это поможет!

...