我有一个输入字段:
<sj:datepicker readonly="true" name="exam.endDate" required="true" timepicker="true" timepickerAmPm="true" />
其中exam.endDate是一个带有相应getter和setter的java.sql.Timestamp对象。 Exam是存储在表中的实体,endDate的列是TIMESTAMP类型。当我坚持考试实体并稍后检索它时,我的所有值都只是日期,时间显示为00:00。我如何存储时间组件?
这就是我显示日期的方式:
<s:date name="exam.endDate" format="dd/MM HH:mm" />
我得到的结果是:“24/06 00:00”
我知道参数拦截器无法正常工作,因为当我输入动作时打印出DateFormat.getDateTimeInstance().format(exam.endDate)
,无论输入什么,它都会打印出00:00。
答案 0 :(得分:0)
原来struts2参数拦截器不处理时间戳,所以我需要编写自己的时间戳。
public class MyTimeStampConverter extends StrutsTypeConverter {
private static final SimpleDateFormat sdf = new SimpleDateFormat("<!--Desired Format here-->");
@Override
public Object convertFromString(Map context, String[] values, Class toClass) throws TypeConversionException {
try{
if (values == null || values.length == 0) {
return null;
}
return new java.sql.Timestamp(sdf.parse(values[0]).getTime());
}catch(Exception e){
throw new TypeConversionException(e);
}
}
@Override
public String convertToString(Map context, Object object) throws TypeConversionException {
try{
if(object instanceof Timestamp){
return sdf.format(new Date(((Timestamp)object).getTime()));
}
return "";
}catch(Exception e){
throw new TypeConversionException(e);
}
}
}