Struts2之类型转换器

我们都知道从jsp页面传到后台的都是String类型,后台类中类型很多(int,Object[],Date等),这个时候就需要转换.

首先创建一个普通类继承ActionSupport,里面写一个execute()方法.

1 public String execute() {
2         System.out.println("username	"+stu.getUsername());
3         System.out.println("password	"+stu.getPassword());
4         System.out.println("birthday	"+stu.getBrithday());
5         return "yeah";
6     }

先把实体类挂上:

 1 public class Student {
 2     private String username;
 3     private String password;
 4     private Date brithday;
 5     
 6     public Date getBrithday() {
 7         return brithday;
 8     }
 9 
10     public void setBrithday(Date brithday) {
11         this.brithday = brithday;
12     }
13     
14     public String getUsername() {
15         return username;
16     }
17     public void setUsername(String username) {
18         this.username = username;
19     }
20     public String getPassword() {
21         return password;
22     }
23     public void setPassword(String password) {
24         this.password = password;
25     }

类的结构图:

接下来写Struts2配置文件:

<struts>
    <package name="test" namespace="/" extends="struts-default">
        <action name="Login" class="cn.jbit.dao.TheFirst">
            <result name="yeah">success.jsp</result>
            <result name="input">success.jsp</result>
            
    </package>
</struts>

自定义类型转化器:

创建一个键值对文件:

TheFirst-conversion.properties:

 全局类型自定义转换器:

Struts2支持的日期格式是2016-3-19这种格式,如果要用2016/3/19就会报错,这时我们可以自己来定义转换器.

还是创建一个键值对文件convert.properties:

日期类型转换器:

首先创建一个普通类继承DefaultTypeConverter:

 1 public class DateConversion extends DefaultTypeConverter {
 2     @Override
 3     public Object convertValue(Object value, Class toType) {
 4         System.out.println("自定义类型转换器");
 5           System.out.println(value);
 6           if (value instanceof String[]) {
 7              String[] temps=(String[])value;
 8              SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");
 9             try {
10                 return sdf.parse(temps[0]);
11             } catch (ParseException e) {
12                 e.printStackTrace();
13             }
14           }
15           return new Date();
16     }
17 }

接下来可以在控制台上看到:

总结图:

 

原文地址:https://www.cnblogs.com/wcf6676/p/5295633.html