这块感觉学得很模糊,虽然两种类型转换器最后都可以,这次重新开个项目来测试。
先快速开发,之后详解,最后给源码
(1)struts2开发环境搭建起来。
传送门:http://blog.csdn.net/fanfan4569/article/details/52451549
(2)使用错误机制
修改错误信息显示 - 》国际化 传送门:http://blog.csdn.net/fanfan4569/article/details/52576000
若age输入格式错误,则会显示以下信息:
①局部类型转换器
1.1配置文件
需要类型转换的类对应的配置文件,文件名开头需要一致
要点说明:
1。局部类转换器仅仅对某个Action的属性起作用
2。birth=com.yyf.converters.DateConverter
当浏览器提交请求时,请求中的birth请求参数将被该类型转换器处理,即使用convertValue()方法将字符串转换成Date实例
3。却只能一次使用(对一个Action有效),过于浪费
②全局类型转换器
2.1配置文件
只需配置一个xwork-conversion.properties
源码
LoginAction.java
public class LoginAction extends ActionSupport {
private String username;
private String password;
private int age;
private Date birth;
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String execute() {
System.out.println("age:" + age);
System.out.println("birth:" + birth);
if (getUsername().equals("yyf") && getPassword().equals("123")) {
return SUCCESS;
}
return ERROR;
}
}
DateConverter.java
public class DateConverter extends StrutsTypeConverter {
private DateFormat dateFormat;
public DateConverter(){
System.out.println("DateConverter's constructor...");
dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
}
@Override
public Object convertFromString(Map map, String[] strings, Class aClass) {
System.out.println("converFormString ...");
if(aClass == Date.class){
System.out.println("is Date.class..." );
if(strings != null && strings.length > 0){
String value = strings[0];
System.out.println(value);
try {
return dateFormat.parseObject(value);
} catch (ParseException e) {
throw new XWorkException("Could not parse date", e);
}
}
}
//若没有转换成功,则返回values
return strings;
}
@Override
public String convertToString(Map map, Object o) {
System.out.println("convertToString...");
if(o instanceof Date){
Date date = (Date)o;
return dateFormat.format(date);
}
return null;
}
}
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="action" extends="struts-default">
<action name="login" class="com.yyf.action.LoginAction">
<result name="input">/LoginForm.jsp</result>
<result name="error">/WEB-INF/content/error.jsp</result>
<result name="success">/WEB-INF/content/success.jsp</result>
</action>
</package>
</struts>