Без возможности 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
- это место, где вы можете поступить противоположным образом.
Я позволю вам самостоятельно разобраться, как добавить ,
в сценарий на стороне клиента.Надеюсь, это поможет!