在中设置日期格式使用日期时间转换器
我有一个
,其中包含
,其中加载了 CategoryHistory
对象。我仅将 Date date
字段显示为 itemLabel
。 这可行,但我想格式化日期: 我创建了一个扩展 javax.faces.convert.DateTimeConverter 的转换器并更改构造函数中的字段。但我的日期仅以默认格式显示:(
DateAndTimeConverter.java
import javax.faces.bean.ManagedBean;
import javax.faces.convert.Converter;
import javax.faces.convert.DateTimeConverter;
import javax.faces.convert.FacesConverter;
@FacesConverter(value = "dateAndTimeconverter")
@ManagedBean
public class DateAndTimeConverter extends DateTimeConverter implements Converter {
public DateAndTimeConverter(){
this.setDateStyle("short");
}
xhtml
<h:selectOneMenu valueChangeListener="#{admin.categoryHistoryListener}"
onchange="submit()" value="#{admin.categoryHistory.id}" converter="#{dateAndTimeconverter}">
<f:selectItems value="#{admin.categoryHistories}" var="n"
itemValue="#{n.id}" itemLabel="#{n.date}">
</f:selectItems>
</h:selectOneMenu>
当我尝试时它也不起作用:
<h:selectOneMenu valueChangeListener="#{admin.categoryHistoryListener}"
onchange="submit()" value="#{admin.categoryHistory.id}">
<f:converter converterId="dateAndTimeconverter"/>
<f:selectItems value="#{admin.categoryHistories}" var="n"
itemValue="#{n.id}" itemLabel="#{n.date}">
</f:selectItems>
</h:selectOneMenu>
CategoryHistory 有一个日期日期,和长 id +...
谢谢
I have a <h:selectOneMenu>
that has <f:selectItems>
with CategoryHistory
objects loaded in it. I only show the Date date
field as itemLabel
.
That works but I want to format the date:
I created a converter that extends javax.faces.convert.DateTimeConverter
and change the fields in the constructor. But my dates only show in default format :(
DateAndTimeConverter.java
import javax.faces.bean.ManagedBean;
import javax.faces.convert.Converter;
import javax.faces.convert.DateTimeConverter;
import javax.faces.convert.FacesConverter;
@FacesConverter(value = "dateAndTimeconverter")
@ManagedBean
public class DateAndTimeConverter extends DateTimeConverter implements Converter {
public DateAndTimeConverter(){
this.setDateStyle("short");
}
xhtml
<h:selectOneMenu valueChangeListener="#{admin.categoryHistoryListener}"
onchange="submit()" value="#{admin.categoryHistory.id}" converter="#{dateAndTimeconverter}">
<f:selectItems value="#{admin.categoryHistories}" var="n"
itemValue="#{n.id}" itemLabel="#{n.date}">
</f:selectItems>
</h:selectOneMenu>
It also doesn't work when I try:
<h:selectOneMenu valueChangeListener="#{admin.categoryHistoryListener}"
onchange="submit()" value="#{admin.categoryHistory.id}">
<f:converter converterId="dateAndTimeconverter"/>
<f:selectItems value="#{admin.categoryHistories}" var="n"
itemValue="#{n.id}" itemLabel="#{n.date}">
</f:selectItems>
</h:selectOneMenu>
CategoryHistory Has a Date date, and Long id +...
Thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不幸的是,JSF 转换器仅适用于输入值,而不适用于输入标签。
你需要用其他方法来解决这个问题。例如,使用
SimpleDateFormat
设置日期格式。或者,如果您的环境支持 EL 2.2,只需直接调用转换器方法(您已经将其作为托管 bean):如果您碰巧使用 JSF 实用程序库 OmniFaces,那么你也可以使用它的
of:formatDate()< /code>
函数。例如:
Unfortunately, the JSF converters only applies on the input value, not on the input label.
You'll need to solve this other ways. E.g. a getter which uses
SimpleDateFormat
to format the date. Or if your environment supports EL 2.2, simply invoke the converter method directly (you've it as managed bean already):If you happen to use JSF utility library OmniFaces, then you can also use its
of:formatDate()
function. E.g.:您可以在 bean 中使用转换器方法,如下所示:
并且,在 f:selectItems 内的 xhtml 页面中:
You can use a converter method in your bean, as:
And, in your xhtml page inside f:selectItems:
例子
Example