Spring MVC自带的表单标签比较简单,很多时候需要借助EL和JSTL来完成。
下面是一个比较简单的表单提交页面功能:
1、User model
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
package com.my.controller.bean;
import java.util.Date;
import java.util.List;
import javax.validation.constraints.Future;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;
public class User {
private long id;
@Length (min= 2 , max= 50 , message= "User name length range = 2-50" )
private String name;
@Future (message= "时间不能小于今天" )
private Date createTime;
@NotEmpty (message= "Customer不能为空" )
private List<Customer> customers;
@NotNull (message= "Girl不能为空" )
private boolean girl;
private String[] cbx;
@NotNull (message= "Age can NOT be Null" )
@Min (value= 18 , message= "最小18岁" )
@Max (value= 100 , message= "最大100岁" )
private int age;
@Email (message= "Email格式不正确" )
private String email;
public long getId() {
return id;
}
public void setId( long id) {
this .id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this .name = name;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this .createTime = createTime;
}
public List<Customer> getCustomers() {
return customers;
}
public void setCustomers(List<Customer> customers) {
this .customers = customers;
}
public boolean isGirl() {
return girl;
}
public void setGirl( boolean girl) {
this .girl = girl;
}
public String[] getCbx() {
return cbx;
}
public void setCbx(String[] cbx) {
this .cbx = cbx;
}
public int getAge() {
return age;
}
public void setAge( int age) {
this .age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this .email = email;
}
}
|
2、Controller
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
package com.my.controller;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.my.controller.bean.Customer;
import com.my.controller.bean.User;
@Controller
@RequestMapping (value= "/post" )
public class TestPostController {
private static List<User> users = new ArrayList<User>();
{
//-----------------------------------------------
// 设置Entity
// -----------------------------------------------
users.add( new User());
User user = users.get( 0 );
user.setId( 1 );
user.setName( "Robin" );
user.setCreateTime( new Date());
user.setGirl( true );
user.setCbx( new String[] { "1" , "2" , "3" });
user.setAge( 18 );
user.setEmail( "abcd@abc.com" );
user.setCustomers( new ArrayList<Customer>());
Customer customer1 = new Customer();
customer1.setId( 1 );
customer1.setCompany( "Company - 1" );
customer1.setCreateTime( new Date());
customer1.setUser(user);
user.getCustomers().add(customer1);
Customer customer2 = new Customer();
customer2.setId( 1 );
customer2.setCompany( "Company - 2" );
customer2.setCreateTime( new Date());
customer2.setUser(user);
user.getCustomers().add(customer2);
}
@RequestMapping
public ModelAndView index() {
ModelAndView view = new ModelAndView( "TestPost/index" );
view.addObject( "users" , users);
return view;
}
@RequestMapping (value= "/addUser" , method=RequestMethod.POST)
public ModelAndView addUser( @ModelAttribute @Valid User user, BindingResult result) {
ModelAndView view = new ModelAndView( "redirect:/post" );
if (result.hasErrors()) {
List<FieldError> errors = result.getFieldErrors();
for (FieldError err : errors) {
System.out.println( "ObjectName:" + err.getObjectName() + "\tFieldName:" + err.getField()
+ "\tFieldValue:" + err.getRejectedValue() + "\tMessage:" + err.getDefaultMessage());
}
view.addObject( "users" , users);
return view;
}
user.setId(users.size() + 1 );
user.getCustomers().get( 0 ).setId( 1 );
user.getCustomers().get( 0 ).setUser(user);
users.add(user);
view.addObject( "users" , users);
return view;
}
}
|
3、View
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
<%@ page language= "java" contentType= "text/html; charset=UTF-8" pageEncoding= "UTF-8" %>
<%@ page import = "com.my.controller.bean.*" %>
<%@ taglib uri= "http://java.sun.com/jsp/jstl/core" prefix= "c" %>
<%@ taglib uri= "http://java.sun.com/jsp/jstl/fmt" prefix= "fmt" %>
<%@ taglib uri= "http://java.sun.com/jsp/jstl/functions" prefix= "fn" %>
<%@ taglib prefix= "st" uri= "http://www.springframework.org/tags" %>
<%@ taglib uri= "http://www.springframework.org/tags/form" prefix= "sf" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<meta http-equiv= "Content-Type" content= "text/html; charset=UTF-8" >
<title>Index</title>
</head>
<body>
<fmt:setLocale value= "zh_cn" />
<form action= "<st:url value=" /post/addUser "></st:url>" method= "post" >
<c:forEach items= "${users}" var= "user" >
User:${user.name}<br/>
Create time:<fmt:formatDate value= "${user.createTime}" /><br/>
Is girl:
<c:choose>
<c:when test= "${user.girl}" >Yes</c:when>
<c:when test= "${!user.girl}" >No</c:when>
<c:otherwise>N/A</c:otherwise>
</c:choose>
<br/>
Checkboxs:
<c:forEach items= "${user.cbx}" var= "item" >
${item},
</c:forEach>
<br/>
Age:${user.age}<br/>
E-mail:${user.email}<br/>
<hr/>
<table style= "width:100%;border:1px solid #ccc;" >
<thead>
<tr style= "text-align:left; background-color:#eee;" >
<th>Company name</th>
<th>User</th>
<th>Create time</th>
</tr>
</thead>
<tbody>
<c:forEach items= "${user.customers}" var= "item" >
<tr>
<td>${item.company}</td>
<td>${item.user.name}</td>
<td><fmt:formatDate value= "${item.createTime}" pattern= "yyyy-MM-dd" /></td>
</tr>
</c:forEach>
</tbody>
</table>
<hr/>
</c:forEach>
User name:
<input type= "text" name= "name" id= "name" /><br/>
Is girl:
<input type= "radio" name= "girl" id= "isGirl" value= "true" checked= "checked" /><label for = "isGirl" >Yes</label>
<input type= "radio" name= "girl" id= "noGirl" value= "false" /><label for = "noGirl" >No</label><br/>
Checkboxs:
<input type= "checkbox" name= "cbx" id= "cbx1" value= "1" /><label for = "cbx1" > 1 </label>
<input type= "checkbox" name= "cbx" id= "cbx2" value= "2" /><label for = "cbx2" > 2 </label>
<input type= "checkbox" name= "cbx" id= "cbx3" value= "3" /><label for = "cbx3" > 3 </label>
<br/>
Age:<input type= "text" name= "age" id= "age" /><br/>
E-mail:<input type= "text" name= "email" id= "email" /><br/>
Create time:
<input type= "text" name= "createTime" id= "createTime" /><br/>
Company:
<input type= "text" name= "customers[0].company" id= "customers[0].company" /><br/>
<input type= "submit" value= "add" />
<sf:errors path= "*" ></sf:errors>
</form>
<hr/>
</body>
</html>
|
4、测试结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/HD/p/4123764.html