xwork-conversion.properties檔案,程式自動加載web.xml,根據web.xml中的配置,自動找到struts.xml檔案,此時如果struts.xml同級目錄存在xwork-conversion.properties檔案,程式就會自動加載該檔案。
xwork-conversion.properties它是一個格式轉換器。
例:
xwork-conversion.properties檔案中配置:
java.util.Date=com.xxx.DateConverter
DateConvert.java:
package com.xxx;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.apache.log4j.Logger;
import org.apache.struts2.util.StrutsTypeConverter;
public class DateConverter extends StrutsTypeConverter {
private static final Logger log = Logger.getLogger(DateConverter.class);
public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
public static final DateFormat[] ACCEPT_DATE_FORMATS = {
new SimpleDateFormat(DEFAULT_DATE_FORMAT),
new SimpleDateFormat("yyyy年MM月dd日"),
new SimpleDateFormat("yyyy/MM/dd") };
public DateConverter() {
}
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
if (values[0] == null || values[0].trim().equals(""))
return null;
for (DateFormat format : ACCEPT_DATE_FORMATS) {
try {
return format.parse(values[0]);
} catch (ParseException e) {
continue;
} catch (RuntimeException e) {
continue;
}
}
log.debug("can not format date string:" + values[0]);
return null;
}
@Override
public String convertToString(Map context, Object o) {
if (o instanceof Date) {
SimpleDateFormat format = new SimpleDateFormat(
DEFAULT_DATE_FORMAT);
try {
return format.format((Date) o);
} catch (RuntimeException e) {
return "";
}
}
return "";
}
}
JSP頁面使用Struts标簽時,如果屬性的類型為日期,會自動轉換成字元串顯示,不用再使用s:date标簽了。
例:
<s:textfield id="bean.model.changeDate" name="bean.model.changeDate"></s:textfield>
其中,changeDate為日期格式,此時輸出的結果應該是:
<input type="text" name="bean.model.changeDate" value="2017-07-11" id="bean.model.changeDate"/>