求助!!!Struts2自定义类型转换器遇到问题!

Struts2版本:2.5.20

actionDemo.ActionDemo4类:

 1 public class ActionDemo4 {
 2 
 3     private String id;
 4     private String username;
 5     private String password;
 6     private String desc;
 7     private boolean allowed;
 8     private String[] hobbies;
 9     private String sex;
10     private Province province;
11     private String city;
12 
13     public String getId() {
14         return id;
15     }
16 
17     public void setId(String id) {
18         this.id = id;
19     }
20 
21     public String getUsername() {
22         return username;
23     }
24 
25     public void setUsername(String username) {
26         this.username = username;
27     }
28 
29     public String getPassword() {
30         return password;
31     }
32 
33     public void setPassword(String password) {
34         this.password = password;
35     }
36 
37     public String getDesc() {
38         return desc;
39     }
40 
41     public void setDesc(String desc) {
42         this.desc = desc;
43     }
44 
45     public boolean isAllowed() {
46         return allowed;
47     }
48 
49     public void setAllowed(boolean allowed) {
50         this.allowed = allowed;
51     }
52 
53     public String[] getHobbies() {
54         return hobbies;
55     }
56 
57     public void setHobbies(String[] hobbies) {
58         this.hobbies = hobbies;
59     }
60 
61     public String getSex() {
62         return sex;
63     }
64 
65     public void setSex(String sex) {
66         this.sex = sex;
67     }
68 
69     public Province getProvince() {
70         return province;
71     }
72 
73     public void setProvince(Province province) {
74         this.province = province;
75     }
76 
77     public String getCity() {
78         return city;
79     }
80 
81     public void setCity(String city) {
82         this.city = city;
83     }
84 
85     @Override
86     public String toString() {
87         return "ActionDemo4 [id=" + id + ", username=" + username + ", password=" + password + ", desc=" + desc
88                 + ", allowed=" + allowed + ", hobbies=" + Arrays.toString(hobbies) + ", sex=" + sex + ", province="
89                 + province + ", city=" + city + "]";
90     }
91 
92     public String testTag() {
93         System.out.println(this);
94         return "success";
95     }
96 }

actionDemo.Province类:

 1 public class Province {
 2 
 3     private String provinceId;
 4     private String provinceName;
 5 
 6     public Province() {
 7         provinceName = "--请选择省份--";
 8     }
 9 
10     public Province(String provinceId, String provinceName) {
11         this.provinceId = provinceId;
12         this.provinceName = provinceName;
13     }
14 
15     public String getProvinceId() {
16         return provinceId;
17     }
18     public void setProvinceId(String provinceId) {
19         this.provinceId = provinceId;
20     }
21 
22     public String getProvinceName() {
23         return provinceName;
24     }
25     public void setProvinceName(String provinceName) {
26         this.provinceName = provinceName;
27     }
28 
29     @Override
30     public String toString() {
31         return provinceName;
32     }
33 
34     public static List<Province> provinces() {
35         List<Province> provinces = new ArrayList<Province>();
36         provinces.add(new Province("gd", "广东"));
37         provinces.add(new Province("fz", "福建"));
38         return provinces;
39     }
40 
41     public static Province getProvince(String provinceId) {
42         List<Province> provinces = provinces();
43         for (Province province : provinces) 
44             if (province.provinceId != null && province.provinceId.equals(provinceId)) 
45                 return province;
46         return new Province();
47     }
48 }

类型转换器actionDemo.ProvinceConverter类:

 1 public class ProvinceConverter extends StrutsTypeConverter {
 2 
 3     @SuppressWarnings("rawtypes")
 4     @Override
 5     public Object convertFromString(Map context, String[] values, Class toClass) {
 6         if (toClass == Province.class) 
 7             if (values != null && values.length > 0) {
 8                 String value = values[0];
 9                 return Province.getProvince(value);
10             }
11         return values;
12     }
13 
14     @SuppressWarnings("rawtypes")
15     @Override
16     public String convertToString(Map context, Object o) {
17         if (o instanceof Province) 
18             return ((Province) o).getProvinceId();
19         return null;
20     }
21 
22 }

配置文件actionDemo.ActionDemo4-conversion.properties:

province=actionDemo.ProvinceConverter

出现的问题是:

获取province属性时会调用converFromString()方法。(这个应该证明我的配置文件没有错)

然而回显的时候没有调用converToString()方法。这是为什么?

求助!!!哪位大佬来995

猜你喜欢

转载自www.cnblogs.com/lqkStudy/p/10753808.html