对于locale =“fr”</p:calendar>,提到pattern =“dd-MMM-yyyy”时,<p:calendar>无法正常工作

时间:2014-01-31 11:01:23

标签: date jsf-2 primefaces calendar

在我的多语言项目中,应用程序以两种语言查看:英语和法语。我有一个日期选择日历来插入日期。像:

<p:calendar id="doj" required="true" yearRange="c-100:c+100"
              value="#{userdetailsController.currentlyLoggedUser.doj}" 
              styleClass="calendar" showOn="button" label="#{prop['tum.doj.label']}" 
              navigator="true" locale="#{localeController.locale}"
              pattern="dd-MMM-yyyy">
</p:calendar>

选择区域设置en时,<p:calendar>正常工作。单击日历按钮可打开日期选择器日历。但是,当选择区域设置fr时,<p:calendar>按钮不起作用。但是,如果我删除模式或制作pattern="dd-MMMM-yyyy",那么它可以正常工作。但我希望以dd-MMM-yyyy模式显示日期。

请建议! 提前致谢。 我在我的应用程序中使用primefaces3.5。

1 个答案:

答案 0 :(得分:1)

我试图复制错误但没有成功。但是,我注意到,当从en更改为fr语言环境时,我有 08-janv.-2013 而不是 08-Jan-2013

以下是我使用的示例代码,也许它会对您有帮助。

ViewScoped bean的属性

private String locale = "en";    

private Date date = new Date();

视图

<p:growl showDetail="true" autoUpdate="true" />

<h:form>
    <p:selectOneMenu value="#{viewMBean.locale}">
        <p:ajax update="doj" />
        <f:selectItem itemLabel="FR" itemValue="fr" />
        <f:selectItem itemLabel="EN" itemValue="en" />
    </p:selectOneMenu>

    <p:calendar id="doj" required="true" yearRange="c-100:c+100" value="#{viewMBean.date}"
                styleClass="calendar" showOn="button" pattern="dd-MMM-yyyy"
                navigator="true" locale="#{viewMBean.locale}" />

    <p:commandButton value="Submit" />
</h:form>

<script>
    PrimeFaces.locales ['fr'] = {
        closeText: 'Fermer',
        prevText: 'Précédent',
        nextText: 'Suivant',
        monthNames: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
        monthNamesShort: ['Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Jun', 'Jul', 'Aoû', 'Sep', 'Oct', 'Nov', 'Déc'],
        dayNames: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
        dayNamesShort: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
        dayNamesMin: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],
        weekHeader: 'Semaine',
        firstDay: 1,
        isRTL: false,
        showMonthAfterYear: false,
        yearSuffix: '',
        timeOnlyTitle: 'Choisir l\'heure',
        timeText: 'Heure',
        hourText: 'Heures',
        minuteText: 'Minutes',
        secondText: 'Secondes',
        currentText: 'Maintenant',
        ampm: false,
        month: 'Mois',
        week: 'Semaine',
        day: 'Jour',
        allDayText: 'Toute la journée'
    };
</script>