【问题标题】:Primefaces p:calendar, value incorrectly setPrimefaces p:日历,值设置错误
【发布时间】:2014-10-15 02:37:55
【问题描述】:

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

这是我的 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

有人可以帮忙吗?

【问题讨论】:

    标签: jsf-2 primefaces calendar


    【解决方案1】:

    你的错误在pattern

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

    pattern 基于SimpleDateFormat 规则。如果你仔细阅读它的javadoc,你会发现mm代表分钟,而不是几个月。

    几个月,你需要MM

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

    【讨论】:

      猜你喜欢
      • 2014-03-30
      • 2017-12-24
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      相关资源
      最近更新 更多