2015-07-02 3 views
1

Я - задача изменить формат даты в соответствии с языком пользователя. В настоящее время сайт работает на китайском и английском языках, однако я не могу изменить формат маски в соответствии с языком пользователя.Несколько Dateformat

<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> 

мне нужно формат даты маски будет 9999 年 99 月 99 日, когда пользователь Войти как пользователь zh_CN или формате даты ДД/ММ/ГГГГ для пользователя en_UK. Есть ли способ сделать это?

Я уже установить локаль

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; 
} 

EDIT:

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; 
} 

Кажется, что-то не так. но маска просто не появляется

ответ

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

+0

Маска не кажется, работает. Кажется, что ничего не появляется, когда я сосредоточен на этом. – magictomage

+0

попробуйте удалить значение, и оно должно иметь пустое пространство, подобное этому ____ __ __ __ __ __ 日 – magictomage

+0

Извините, но я не понимаю, где проблема. Такое поведение является правильным. Маска помещает символы подчеркивания (_) в места, которые необходимо заполнить. – Miguel

Смежные вопросы