Java 如何更改Openxava日期组件的日期格式?
我们需要更改默认openxava日期(javaSript)组件的日期格式。默认格式为MM/dd/yy,我们需要将其更改为MM/dd/yyyy 通过下面的链接,我们可以通过实现IFormatter接口来更改列表视图的格式。但是在本次对话中,没有明确提到如何更改日期选择组件的格式Java 如何更改Openxava日期组件的日期格式?,java,openxava,Java,Openxava,我们需要更改默认openxava日期(javaSript)组件的日期格式。默认格式为MM/dd/yy,我们需要将其更改为MM/dd/yyyy 通过下面的链接,我们可以通过实现IFormatter接口来更改列表视图的格式。但是在本次对话中,没有明确提到如何更改日期选择组件的格式 请帮助我解决此问题…要更改日期或任何其他类型的解析和格式化方式,必须为该类型定义格式化程序。要定义格式化程序,请编辑editors.xml文件并添加如下条目: <editor name="DateCalendar"
请帮助我解决此问题…要更改日期或任何其他类型的解析和格式化方式,必须为该类型定义格式化程序。要定义格式化程序,请编辑editors.xml文件并添加如下条目:
<editor name="DateCalendar" url="dateCalendarEditor.jsp">
<formatter class="com.yourcompany.yourapp..formatters.YourDateFormatter" />
<for-type type="java.util.Date" />
</editor>
您必须编写实现IFormatter的DateFormatter。例如,日期的默认格式化程序如下:
package org.openxava.formatters;
import java.text.*;
import javax.servlet.http.*;
import org.openxava.util.*;
/**
* Date formatter with multilocale support. <p>
*
* Although it does some refinement in Spanish case, it support formatting
* on locale basis.<br>
*
* @author Javier Paniza
*/
public class DateFormatter implements IFormatter {
private static DateFormat extendedDateFormat = new SimpleDateFormat("dd/MM/yyyy"); // Only for some locales like "es" and "pl"
private static DateFormat [] extendedDateFormats = { // Only for some locales like "es", "fr", "ca" and "pl"
new SimpleDateFormat("dd/MM/yy"),
new SimpleDateFormat("ddMMyy"),
new SimpleDateFormat("dd.MM.yy")
};
public String format(HttpServletRequest request, Object date) {
if (date == null) return "";
if (Dates.getYear((java.util.Date)date) < 2) return "";
return getDateFormat().format(date);
}
public Object parse(HttpServletRequest request, String string) throws ParseException {
if (Is.emptyString(string)) return null;
if (isExtendedFormat()) {
if (string.indexOf('-') >= 0) { // SimpleDateFormat does not work well with -
string = Strings.change(string, "-", "/");
}
}
DateFormat [] dateFormats = getDateFormats();
for (int i=0; i<dateFormats.length; i++) {
try {
dateFormats[i].setLenient(false);
return dateFormats[i].parseObject(string);
}
catch (ParseException ex) {
}
}
throw new ParseException(XavaResources.getString("bad_date_format",string),-1);
}
private boolean isExtendedFormat() {
return "es".equals(Locales.getCurrent().getLanguage()) ||
"ca".equals(Locales.getCurrent().getLanguage()) ||
"pl".equals(Locales.getCurrent().getLanguage()) ||
"fr".equals(Locales.getCurrent().getLanguage());
}
private DateFormat getDateFormat() {
if (isExtendedFormat()) return extendedDateFormat;
return DateFormat.getDateInstance(DateFormat.SHORT, Locales.getCurrent());
}
private DateFormat[] getDateFormats() {
if (isExtendedFormat()) return extendedDateFormats;
return new DateFormat [] { getDateFormat() };
}
}
package org.openxava.formatters;
导入java.text.*;
导入javax.servlet.http.*;
导入org.openxava.util.*;
/**
*支持多语言环境的日期格式化程序
*
*虽然它在西班牙语中做了一些改进,但它支持格式化
*基于区域设置。
*
*@作者贾维尔·帕尼扎
*/
公共类DateFormatter实现了IFormatter{
private static DateFormat extendedDateFormat=new SimpleDateFormat(“dd/MM/yyyy”);//仅适用于某些区域设置,如“es”和“pl”
private static DateFormat[]extendedDateFormats={//仅适用于某些区域设置,如“es”、“fr”、“ca”和“pl”
新简化格式(“日/月/年”),
新简化格式(“ddMMyy”),
新简化格式(“年月日”)
};
公共字符串格式(HttpServletRequest请求,对象日期){
如果(日期=null)返回“”;
if(Dates.getYear((java.util.Date)Date)<2)返回“”;
返回getDateFormat().format(日期);
}
公共对象解析(HttpServletRequest请求,字符串字符串)引发ParseException{
if(Is.emptyString(string))返回null;
如果(isExtendedFormat()){
如果(string.indexOf('-')>=0){//SimpleDataFormat不能很好地处理-
string=Strings.change(字符串“-”,“/”;
}
}
DateFormat[]dateFormats=getDateFormats();
对于(int i=0;i@javiepaniza感谢您的回复。我也想更改java脚本组件的日期格式。这样就不会更改java脚本组件的格式。嗨,用户,关于JavaScript格式化程序,请将您的问题提交到OpenXava论坛,我将在那里回答您。