Struts2之类型转换器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2之类型转换器相关的知识,希望对你有一定的参考价值。

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

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

1 public String execute() {
2         System.out.println("username\t"+stu.getUsername());
3         System.out.println("password\t"+stu.getPassword());
4         System.out.println("birthday\t"+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 }

 

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

技术分享

总结图:

技术分享

 

 

以上是关于Struts2之类型转换器的主要内容,如果未能解决你的问题,请参考以下文章

struts2学习笔记之十一:struts2的类型转换器

Struts2之类型转换器

Struts2之类型转换器

14.怎样自学Struts2之Struts2类型转换[视频]

Java实战之01Struts2-03属性封装类型转换数据验证

struts2 之 struts2数据处理