我的任务是根据用户的语言更改日期格式。目前该网站以中文和英文运行,但我无法根据用户的语言更改掩码的格式。
<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;
}
似乎没有任何错误。但面具似乎没有出来
答案 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;
}