[Spring MVC] -簡單表單提交實(shí)例
Spring MVC自帶的表單標(biāo)簽比較簡單,很多時候需要借助EL和JSTL來完成。
下面是一個比較簡單的表單提交頁面功能:
1、User model
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
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>();
{
//-----------------------------------------------
// 設(shè)置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
<%@ 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、測試結(jié)果

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- layui 圖片上傳+表單提交+ Spring MVC的實(shí)例
- SpringMVC實(shí)現(xiàn)表單驗(yàn)證功能詳解
- springMVC中基于token防止表單重復(fù)提交方法
- SpringMVC中使用bean來接收form表單提交的參數(shù)時的注意點(diǎn)
- SpringMVC實(shí)現(xiàn)數(shù)據(jù)綁定及表單標(biāo)簽
- Spring MVC---數(shù)據(jù)綁定和表單標(biāo)簽詳解
- SpringMVC處理Form表單實(shí)例
- Spring MVC中基于自定義Editor的表單數(shù)據(jù)處理技巧分享
- SpringMVC表單提交參數(shù)400錯誤解決方案
相關(guān)文章
SpringBoot Admin 如何實(shí)現(xiàn)Actuator端點(diǎn)可視化監(jiān)控
這篇文章主要介紹了SpringBoot Admin 如何實(shí)現(xiàn)Actuator端點(diǎn)可視化監(jiān)控,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
Java多線程之JUC(java.util.concurrent)的常見類(多線程編程常用類)
這篇文章主要給大家介紹了關(guān)于Java多線程之JUC(java.util.concurrent)的常見類(多線程編程常用類)的相關(guān)資料,Java中的JUC(java.util.concurrent)包提供了一些并發(fā)編程中常用的類,這些類可以幫助我們更方便地實(shí)現(xiàn)多線程編程,需要的朋友可以參考下2024-02-02
java為什么使用BlockingQueue解決競態(tài)條件問題面試精講
這篇文章主要為大家介紹了java為什么使用BlockingQueue解決競態(tài)條件問題面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
一文了解Java動態(tài)代理的原理及實(shí)現(xiàn)
動態(tài)代理指的是,代理類和目標(biāo)類的關(guān)系在程序運(yùn)行的時候確定的,客戶通過代理類來調(diào)用目標(biāo)對象的方法,是在程序運(yùn)行時根據(jù)需要動態(tài)的創(chuàng)建目標(biāo)類的代理對象。本文將通過案例詳細(xì)講解一下Java動態(tài)代理的原理及實(shí)現(xiàn),需要的可以參考一下2022-07-07
java對象轉(zhuǎn)成byte數(shù)組的3種方法
這篇文章主要為大家詳細(xì)介紹了java對象轉(zhuǎn)成byte數(shù)組的3種方法,具有一定的參考價值,感興趣的朋友可以參考一下2018-06-06

