在我的JSF托管bean中,我已将startDate声明为java.utilDate类型,并且我也有getter和setter.从数据库startDate是日期类型.
当我收到值格式是默认类型,我格式化日期
SimpleDateFormat df = new SimpleDateFormat(" dd MMM yyyy");
Date oneDate = new Date(startDate);
df.format(oneDate);
Run Code Online (Sandbox Code Playgroud)
我面临的问题是df.format(oneDate);返回String.是否可以转换df.format(oneDate)回Date,以便我不必更改我的startDate数据类型.
任何帮助都非常感谢.
谢谢
Bal*_*usC 10
根据对该问题的评论:
@BalusC我同意你所说的,最好在UI中进行格式化.所以我在jsf页面中添加了以下内容.
Run Code Online (Sandbox Code Playgroud)<p:inputText value="#{vacationschedule.convertTime(vacationschedule.selectedRow.startDate)}">和
convertTimemanagedBean中的方法是Run Code Online (Sandbox Code Playgroud)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:无法将给定的Object格式化为Date
你正在寻找错误方向的解决方案.人为目标格式化必须在View(UI)方面完成,而不是在Model方面,更不用说Controller方面.
要Date在JSF组件中以人类友好模式呈现对象,您应该使用<f:convertDateTime>标准JSF组件集提供的标记:
<p:inputText value="#{vacationschedule.selectedRow.startDate}">
<f:convertDateTime pattern="yyyy MM dd" />
</p:inputText>
Run Code Online (Sandbox Code Playgroud)
这样您就可以随时保留房产Date.这样您就可以保存编辑后的值(初次尝试时无法实现!).
至于PrimeFaces的<p:calendar>组件,它具有pattern完全用于此目的的属性:
<p:calendar value="#{vacationschedule.selectedRow.startDate}" pattern="yyyy MM dd" />
Run Code Online (Sandbox Code Playgroud)
下载并查阅PrimeFaces用户指南,了解所有可用属性.
| 归档时间: |
|
| 查看次数: |
12830 次 |
| 最近记录: |