Формат двойного числа для не дробных чисел в JSF - PullRequest
0 голосов
/ 22 марта 2011

У меня есть inputText, который принимает значение от пользователя и связан с двойным.Если значение равно «5000», последующие страницы будут отображаться как «5000.0». Есть ли способ отформатировать его так, чтобы, если пользователь вводит не дробное число, он не отображал десятичное число?

Примеры:
Пользователь вводит "5000" Показать"5000"
пользователь вводит "5000.1" Показать "5000.1"

<h:inputText value="#{sessionScope.eventDO.area}" id="areaInTxtId">
    <f:convertNumber pattern="###0"/>
</h:inputText>

Я пытался использовать тег f: convertNumber ниже, но я получаю эту ошибку:

java.lang.ClassCastException: java.lang.Long не может быть приведен к java.lang.Double

, который я не хочу изменять ни в одном коде Java.Только презентация дубля.

Ответы [ 2 ]

1 голос
/ 22 марта 2011

Если вы не найдете шаблон, вы можете написать собственное расширение NumberConverter. Я никогда не пробовал, но это должно работать примерно так:

@FacesConverter(value="ExampleConverter")
public class ExampleConverter extends NumberConverter {

  String getAsString(FacesContext context, UIComponent component,Object value) {
    // call super.getAsString(...) and cut trailing .0
  }
}

Используйте конвертер в лицевой стороне следующим образом:

<h:inputText value="#{sessionScope.eventDO.area}" id="areaInTxtId">
    <f:converter converterId="exampleConverter" />
</h:inputText>
0 голосов
/ 22 марта 2011

Конвертер просто конвертирует число для дальнейшего использования.Если вы хотите добавить определенное поведение при взаимодействии с пользователем, попробуйте использовать событие «onkeyup» javascript и манипулируйте предоставленными данными.Презентация зависит от пользователя и поэтому должна быть вне сервера.

...