Согласно комментарию к вопросу:
@ 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>
, тогда я получаю ошибку
SEVERE: java.lang.IllegalArgumentException: Невозможно отформатировать данный объект как дату.
Вы ищете решение в неправильном направлении.Целевое форматирование должно выполняться на стороне представления (UI), а не на стороне модели, не говоря уже о стороне контроллера.
Чтобы представить объект Date
в удобном для человека шаблоне в компоненте JSF, вы должны использовать тег <f:convertDateTime>
, предоставляемый стандартным набором компонентов JSF:
<p:inputText value="#{vacationschedule.selectedRow.startDate}">
<f:convertDateTime pattern="yyyy MM dd" />
</p:inputText>
Таким образом, вы можете все время сохранять свойство Date
.Таким образом, вы также сможете сохранить отредактированное значение (что было бы невозможно при вашей первоначальной попытке!).
Что касается PrimeFaces '<p:calendar>
*Для компонента 1036 * он имеет атрибут pattern
именно для этой цели:
<p:calendar value="#{vacationschedule.selectedRow.startDate}" pattern="yyyy MM dd" />
Загрузите и ознакомьтесь с PrimeFaces User Guide , чтобы узнать обо всех доступных атрибутах.