Struts2类型转换之批量类型转换
# 输入页面 input2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Struts2.3 converter</title>
</head>
<body>
<form action="userAction2.action">
user info 1: <input type="text" name="user"/><br/>
user info 2: <input type="text" name="user"/><br/>
user info 3: <input type="text" name="user"/><br/>
user info 4: <input type="text" name="user"/><br/>
<input type="submit" value="submit"/>
</form>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 流程跳转 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="struts2" extends="struts-default">
<action name="userAction2" class="space.terwer.struts23.UserAction2">
<result name="success">/output2.jsp</result>
</action>
</package>
</struts>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 业务处理 Action 类 UserAction2
package space.terwer.struts23;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
import space.terwer.bean.User;
public class UserAction2 extends ActionSupport {
private List<User> user;
public List<User> getUser() {
return user;
}
public void setUser(List<User> user) {
this.user = user;
}
@Override
public String execute() throws Exception {
for (User u : this.getUser()) {
System.out.println(u.getUsername() + "," + u.getPassword());
}
return SUCCESS;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 类型转换器 UserAction2-conversion.properties
user=space.terwer.converter.UserConverter3
1
package space.terwer.converter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import org.apache.struts2.util.StrutsTypeConverter;
import space.terwer.bean.User;
public class UserConverter3 extends StrutsTypeConverter {
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
List<User> list = new ArrayList<>();
for (String value : values) {
StringTokenizer st = new StringTokenizer(value, ";");
User user = new User();
String username = st.nextToken();
String pasword = st.nextToken();
user.setUsername(username);
user.setPassword(pasword);
list.add(user);
}
return list;
}
@Override
public String convertToString(Map context, Object o) {
List<User> list = (List) o;
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < list.size(); i++) {
User user = list.get(i);
sb.append("{username=" + user.getUsername());
sb.append(",password=" + user.getPassword());
sb.append("}");
if (i < list.size() - 1) {
sb.append(",");
}
}
sb.append("]");
return sb.toString();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# 输出结果 output2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Struts2.3 converter result</title>
</head>
<body>
<s:property value="user"/>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 效果
大功告成。与单个不一样的地方只在于把对象换成了 List
,其他的类似。
编辑 (opens new window)
上次更新: 2023/02/22, 13:47:25
- 01
- 解决css部分border被圆角切掉之后圆角的边框消失问题03-18
- 02
- 使用TypeScript开发一个自定义的Node-js前端开发脚手架03-08
- 03
- Github-Actions使用release-please实现自动发版03-06