В соответствии с комментарием по этому вопросу:
@BalusC Я согласен с тем, что вы сказали, что лучше для форматирования в пользовательском интерфейсе. Поэтому я добавил следующее на странице jsf.
<p:inputText value="#{vacationschedule.convertTime(vacationschedule.selectedRow.startDate)}">
и convertTime
метод managedBean является
public String convertTime(Date time){
Date date = new Date();
Format format = new SimpleDateFormat("yyyy MM dd");
return format.format(date);
}
<p:inputText>
правильно показывает, однако, если я хотел бы использовать <p:calendar>
тогда я получаю ошибку
суровыми: java.lang.IllegalArgumentException : Невозможно форматировать данный объект как дату
Вы ищете решение в неправильном направлении. Форматирование, ориентированное на человека, должно выполняться на стороне просмотра (UI), а не на стороне модели, не говоря уже о стороне контроллера.
Представить Date
объект в человеческом дружном шаблоне в компоненте JSF, вы должны использовать <f:convertDateTime>
тега предоставленного стандартным набором JSF компонентов:
<p:inputText value="#{vacationschedule.selectedRow.startDate}">
<f:convertDateTime pattern="yyyy MM dd" />
</p:inputText>
Таким образом, вы можете сохранить имущество только Date
всех время. Таким образом вы также сможете сохранить отредактированное значение (что было бы невозможно с вашей начальной попытки!).
Как <p:calendar>
КОМПОНЕНТ PrimeFaces', он имеет атрибут pattern
именно для этой цели:
<p:calendar value="#{vacationschedule.selectedRow.startDate}" pattern="yyyy MM dd" />
Скачать и проконсультироваться с PrimeFaces Users Guide, чтобы узнать обо всех доступных атрибутов.
Просто используйте 'разобрана)' метода (. Однако я не понимаю, как это было бы полезно. Вероятно, вы в конечном итоге получите тот же самый объект 'Date', с которого вы начали. Если вы намерены отформатировать его для представления человека в каком-то интерфейсе, просто отформатируйте его точно в тот момент, когда вы собираетесь представить его людям. – BalusC
Надеюсь, это поможет вам: http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html#parse(java.lang.String, java.text.ParsePosition) –
Почему не продлить дату и просто использовать свой собственный метод toString? –