有没有办法格式化要在选择项目中显示的日期对象?
这是我的例子:
<h:selectOneMenu
label="Period"
value="#{myBean.periodStartEndList}"
id="periodStartEnd"
converter="genericConverter">
<f:selectItem itemLabel="Choose one .." noSelectionOption="true" />
<f:selectItems
value="#{myBean.periodStartEndList}"
var="periodStartEnd"
itemValue="#{periodStartEnd}"
itemLabel="#{periodStartEnd.map['dateStart']} -- #{periodStartEnd.map['dateEnd']}" />
</h:selectOneMenu>
组合/选择显示这些:
Sun May 01 14:57:21 WIT 2011 -- Thu May 05 14:57:21 WIT 2011
Fri May 06 14:57:21 WIT 2011 -- Tue May 10 14:57:21 WIT 2011
我想要一些更简单的东西:
01-05-2011 -- 05-05-2011
06-05-2011 -- 10-05-2011
我想知道如何实现这个目标?
谢谢!
答案 0 :(得分:3)
您可以创建用于转换的EL功能并使用它。检查http://www.javabeat.net/tips/4-expression-language-in-jsp-20.html和http://wiki.apache.org/myfaces/Parameters_In_EL_Functions。 免责声明:我从未使用它,也不知道它是否有效。
答案 1 :(得分:1)
您需要使用日期格式化程序。 AFAIK #{periodStartEnd.map['dateStart']}
会在toString()
调用中结束,假设这会返回Date
个对象。
我不确定JSF 2.0中的Java EL是否已内置函数参数,但如果没有,则可以使用JBoss EL(Java EL扩展)。有了它,您可以提供格式化程序bean并使用类似#{formatter.format(periodStartEnd.map['dateStart'], 'dd-MM-yyyy')}
然后format
将从格式字符串中创建SimpleDateFormat
并将格式化的日期作为字符串返回。
您还可以传入区域设置以提供本地化格式。
第三种替代方法是将格式化的字符串直接存储在periodStartEnd
中并访问它们。
答案 2 :(得分:0)
您可以使用f:convertDateTime
并指定模式。
答案 3 :(得分:0)
您可以在bean中使用转换器方法,如:
public class MyBean{
...
public String formatDate(Date fecha, String pattern) {
return (new SimpleDateFormat(pattern)).format(fecha);
}
...
}
并且,在f:selectItems:
中的xhtml页面中<f:selectItems
value="#{myBean.periodStartEndList}"
var="periodStartEnd"
itemValue="#{periodStartEnd}"
itemLabel="#{myBean.formatDate(periodStartEnd.map['dateStart'],'dd-MM-yyyy')} -- #{myBean.formatDate(periodStartEnd.map['dateEnd'],'dd-MM-yyyy')}" />