类型转换

所谓类型转换,就是在Struts2中,前台文本输入与后台接收参数对象类型之间的转换,大多数情况下,对于基本数据类型,Strus2内建的类型转换已经能够满足要求了。

局部类型转换与全局类型转换的唯一区别在于配置文件的名称与位置不同,其他完全一致

局部类型转换配置文件:Action所在目录,ActionName-conversion.properties

全局类型转换配置文件:class目录:xwork-conversion.proeprties

类型转换器的编写

 1 package org.zln.typeConvert.conversion;
 2 
 3 import org.apache.struts2.util.StrutsTypeConverter;
 4 import org.zln.typeConvert.domain.User;
 5 
 6 import java.util.Map;
 7 
 8 /**
 9  * Created by sherry on 15-7-9.
10  */
11 public class UserConversion extends StrutsTypeConverter{
12     @Override
13     public Object convertFromString(Map context, String[] values, Class toClass) {
14         System.out.println("String To Object");
15         if (values.length > 1){
16             System.out.println("String To Object 1");
17             //如果是集合(List)的话,方法类似
18             User[] users = new User[values.length];
19             for (int i = 0;i < users.length;i++){
20                 User user = new User();
21                 String[] userValues = values[i].split(",",2);
22                 user.setName(userValues[0]);
23                 user.setPass(userValues[1]);
24                 users[i] = user;
25             }
26             return users;
27         }else {
28             System.out.println("String To Object 2");
29             User user = new User();
30             String[] userValues = values[0].split(",",2);
31             user.setName(userValues[0]);
32             user.setPass(userValues[1]);
33             return user;
34         }
35     }
36 
37     @Override
38     public String convertToString(Map context, Object o) {
39         System.out.println("Object To String");
40         if (o instanceof User){
41             System.out.println("Object To String 1");
42             User user = (User) o;
43             return user.getName()+":"+user.getPass();
44         }else if (o instanceof User[]){
45             System.out.println("Object To String 2");
46             User[] users = (User[]) o;
47             StringBuilder stringBuilder = new StringBuilder();
48             stringBuilder.append("[");
49             for (User user:users){
50                 stringBuilder.append("<").append(user.getName()).append(",").append(user.getPass()).append(">");
51             }
52             stringBuilder.append("]");
53             return stringBuilder.toString();
54         }else {
55             return "";
56         }
57     }
58 }

方式有很多,这里只取其中个人认为最简单的一种,就是继承 StrutsTypeConverter 类

其他类型转换:

参数值传递给自定义对象的成员变量

List接收前台参数

Map接收前台参数

原文地址:https://www.cnblogs.com/sherrykid/p/4634783.html