多日期格式

时间:2015-07-02 01:56:41

标签: html jsf primefaces

我的任务是根据用户的语言更改日期格式。目前该网站以中文和英文运行,但我无法根据用户的语言更改掩码的格式。

<h:outputText styleClass="outputText"
                        id="index_output_todate" value="#{msg.index_output_todate}">
</h:outputText>
<p:calendar value="#{pc_Index.w_message.am_todate_filter}"
    id="index_input_todate" styleClass="calendar" maxlength="10"
    pattern="#{pc_Index.dateDisplayFormat}" onfocus="$(this).mask('9999年99月99日');">
<p:watermark for="index_input_todate" value="#{pc_Index.watermarkDateDisplayFormat}" />
<f:convertDateTime pattern="#{pc_Index.dateDisplayFormat}" />
</p:calendar>

当用户以zh_CN用户身份登录或者en_UK用户的日期格式为DD / MM / YYYY时,我需要将掩码的日期格式设置为9999年99月99日。 有没有办法做到这一点?

我已经设置了区域设置

 public String getDateDisplayFormat() {  

    String locale = getUserLocale();
    String DATEFORMAT_UK = "dd/MM/yyyy";
    String DATEFORMAT_US = "mm/dd/yyyy";
    String DATEFORMAT_CN = "yyyy年MM月dd日";
    String _s = DATEFORMAT_UK;
    if(!isEmptyNull(locale) && locale.equals("en_US")) {
        _s = DATEFORMAT_US;
    }
    else if(!isEmptyNull(locale) && locale.equals("zh_CN")) {
        _s = DATEFORMAT_CN;
    }
    return _s;
}

修改

HTML

              <h:form> <p:outputLabel for="index_output_frdate" value="#{msg.index_output_frdate}" /> 
                    <p:calendar id="index_output_frdate" value="#{pc_Index.w_message.am_todate_filter}" 
                                    styleClass="calendar" maxlength="10"
                                    pattern="#{pc_Index.dateDisplayFormat}" mask="true" />  
                    <p:watermark for="index_output_frdate" value="#{pc_Index.watermarkDateDisplayFormat}" /> </h:form>

管理Bean:

                         if (isPageFirstLoad(JSP)) {
        _w.setIndex_viewtype("11961003");
        if (isEmptyNull(_w.getAm_todate_filter())) {
            _w.setAm_todate_filter(getTodayDate());
        }

        Date _todate = _w.getAm_todate_filter();
        Date d = _w.addDaysToDate(_todate, -7);
        _w.setAm_frdate_filter(d);
        _w.setViewNew(true);
        _w.populateAlertsMessages();
    }

    if (this.trigger_viewtype_change) {
        this.trigger_viewtype_change = false;
    }
}









     private Date date;

public Date getDate() {
    return date;
}

public void setDate(Date date) {
    this.date = date;
}
public String getDateDisplayFormat() {
    String locale = getUserLocale(); //WARNING!! Hard-coded!!
    final String DATEFORMAT_UK = "dd/MM/yyyy";
    final String DATEFORMAT_US = "mm/dd/yyyy";
    final String DATEFORMAT_CN = "yyyy年MM月dd日";
    if(!locale.isEmpty() && locale.equals("en_US")) {
       return DATEFORMAT_US;
    }
    if(!locale.isEmpty() && locale.equals("zh_CN")) {
       return DATEFORMAT_CN;
    }
    return DATEFORMAT_UK;
}

似乎没有任何错误。但面具似乎没有出来

1 个答案:

答案 0 :(得分:0)

我不知道你的代码片段究竟是什么失败了。我已经尝试了一个更简单的示例并且运行良好,因此我建议您在此功能中调试所有涉及的代码。

<h:form>
    <p:outputLabel for="mask" value="Mask:" />
    <p:calendar id="mask" value="#{dumpController.date}" pattern="#{dumpController.dateDisplayFormat}" mask="true" />
    <p:watermark for="mask" value="Input a date" />
</h:form>

负责设置日期掩码的方法:

private Date date;

public Date getDate() {
    return date;
}

public void setDate(Date date) {
    this.date = date;
}
public String getDateDisplayFormat() {
    final String locale = "zh_CN"; //WARNING!! Hard-coded!!
    final String DATEFORMAT_UK = "dd/MM/yyyy";
    final String DATEFORMAT_US = "mm/dd/yyyy";
    final String DATEFORMAT_CN = "yyyy年MM月dd日";
    if(!locale.isEmpty() && locale.equals("en_US")) {
       return DATEFORMAT_US;
    }
    if(!locale.isEmpty() && locale.equals("zh_CN")) {
       return DATEFORMAT_CN;
    }
    return DATEFORMAT_UK;
}

enter image description here

enter image description here