Primefaces p:日历,值设置错误

时间:2014-08-21 12:45:56

标签: jsf-2 primefaces calendar

我一直在研究日期格式和时区设置,但仍然无法获得我在managedBean中选择的正确值。我尝试了不同的日子,几个月和几年没有好的结果,因为它似乎是设定小时而不是月份,将1月保持为选择的月份,无论我选择哪一个。由于我没有看到类似的问题,我决定在这里发布我的问题。任何帮助表示赞赏。

这是我的JSF页面中的代码:

<p:calendar pattern="dd-mm-yyyy" locale="fr" value="#{modBean.dateEmp}">
    <h:outputScript name="js/fr.js"/>
    <p:ajax event="dateSelect" process="@this"/>
</p:calendar>

这是我的managedBean中的代码:

public void setDateEmp(Date dateEmp) 
{
    System.out.println("dateEmp param : "+dateEmp);
    DateFormat df=DateFormat.getDateInstance(DateFormat.SHORT, Locale.FRANCE);  
    df.setTimeZone(TimeZone.getTimeZone("Europe/Paris"));
    String dateFormate=df.format(dateEmp);
    System.out.println("dateformate : "+dateFormate);
    try 
    {
        this.dateEmp=df.parse(dateFormate);
        System.out.println(this.dateEmp);
    } 
    catch (ParseException e) 
    {
        e.printStackTrace();
    }
}

最后,这就是我在控制台中获得的三张照片(例如我选择的“2014年8月1日”):

dateEmp param : Wed Jan 01 00:08:00 CET 2014
dateformate : 01/01/14
Wed Jan 01 00:00:00 CET 2014

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

你的错误在pattern

<p:calendar ... pattern="dd-mm-yyyy" />

pattern基于SimpleDateFormat规则。如果您仔细阅读javadoc,则会发现mm代表分钟,而非数月。

几个月来,您需要MM

<p:calendar ... pattern="dd-MM-yyyy" />