转换结果:
index.jsp:
<body>
<s:form action="login" method="post">
<s:textfield name = "date" label = "时间"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form>
</body>
package com.action;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
Date date ;
public String execute() {
return SUCCESS;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
package com.converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
public class DateConverter extends StrutsTypeConverter{
private static final SimpleDateFormat[] DATE_FORMAT = {
new SimpleDateFormat("yyyy/MM/dd"),
new SimpleDateFormat("yyyy-MM-dd")
}; //支持转换类型
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
if(toClass == Date.class){
String dateString = values[0];
for (SimpleDateFormat format : DATE_FORMAT) {
try {
return format.parse(dateString);//parse->Date
} catch (ParseException e) {
continue;
}
}
}
return null;
}
@Override
public String convertToString(Map context, Object value) {
// TODO Auto-generated method stub
Date date = (Date)value;
return new SimpleDateFormat("yyyy-MM-dd").format(date);//format->String
}
}
ok.jsp:
<body>
<s:debug />
<s:property value = "date"/>
</body>
date=com.converter.DateConverter