springmvc 表单提交
Spring MVC自带的表单标签比较简单,很多时候需要借助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=, max=, 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=, message="最小18岁")
@Max(value=, 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>();
{
//-----------------------------------------------
// 设置Entity
// -----------------------------------------------
users.add(new User());
User user = users.);
user.setId();
user.setName("Robin");
user.setCreateTime(new Date());
user.setGirl(true);
user.setCbx("});
user.setAge();
user.setEmail("abcd@abc.com");
user.setCustomers(new ArrayList<Customer>());
Customer customer1 = new Customer();
customer1.setId();
customer1.setCompany("Company - 1");
customer1.setCreateTime(new Date());
customer1.setUser(user);
user.getCustomers().add(customer1);
Customer customer2 = new Customer();
customer2.setId();
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() + );
user.getCustomers().).setId();
user.getCustomers().).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=</label>
<input type=</label>
<input type=</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、测试结果

springmvc 表单提交的更多相关文章
- SpringMVC中使用bean来接收form表单提交的参数时的注意点
这是前辈们对于SpringMVC接收表单数据记录下来的总结经验: SpringMVC接收页面表单参数 springmvc请求参数获取的几种方法 下面是我自己在使用时发现的,前辈们没有记录的细节和注意点 ...
- 第6章—渲染web视图—SpringMVC+Thymeleaf 处理表单提交
SpringMVC+Thymeleaf 处理表单提交 thymleaf处理表单提交的方式和jsp有些类似,也有点不同之处,这里操作一个小Demo,并说明: 1.demo的结构图如下所示: pom.xm ...
- SpringMVC(十四):SpringMVC 与表单提交(post/put/delete的用法);form属性设置encrypt='mutilpart/form-data'时,如何正确配置web.xml才能以put方式提交表单
SpringMVC 与表单提交(post/put/delete的用法) 为了迎合Restful风格,提供的接口可能会包含:put.delete提交方式.在springmvc中实现表单以put.dele ...
- springmvc下js控制表单提交(表单提交前检验,提交后获取json返回值)
这个问题我搞了四天,终于搞懂.因为对js很不熟悉.郁闷的是后台代码出错总可以设置断点调试,前端js代码出错只能通过浏览器提供一些运行数据来分析,很不习惯. 首先说下逻辑:这是一个注册功能,我希望,注册 ...
- SpringMVC 表单标签 & 处理静态资源
使用 Spring 的表单标签 通过 SpringMVC 的表单标签可以实现将模型数据中的属性和 HTML 表单元素相绑定,以实现表单数据更便捷编辑和表单值的回显. form 标签 一般情况下,通过 ...
- 浏览器下载/导出文件 及jQuery表单提交
1 比如以下按钮, 用于导出文件,如EXCEL文件. <li> <button class="whiteBg btn2" onclick="doExp( ...
- (转载)SPRINGMVC表单标签简介
SpringMVC表单标签简介 在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍Spri ...
- SpringMVC表单标签简介
在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍SpringMVC的表单标签之前,我们需 ...
- 【转载】springMVC表单校验+全注解
在这篇文章中,我们将学习如何使用Spring表单标签, 表单验证使用 JSR303 的验证注解,hibernate-validators,提供了使用MessageSource和访问静态资源(如CSS, ...
随机推荐
- 06章 映射一对多双向关联关系、以及cascade、inverse属性
当类与类之间建立了关联,就可以方便的从一个对象导航到另一个对象.或者通过集合导航到一组对象.例如: 对于给定的Emp对象,如果想获得与它关联的Dept对象,只要调用如下方法 Dept dept=emp ...
- wireshark 分析重传包
如下图所示,经过实验,wireshark把第一次重传包分类为out of order 类型,可以通过tcp.analysis.out_of_order过滤,如果第二次重传,分类为fast retran ...
- Mac下打开eclipse 始终提示 你需要安装Java SE 6 Runtime
Mac下打开eclipse 始终提示 你需要安装Java SE 6 Runtime 周银辉 我的mac os 版本是10.9.2, JDK配置得好好的,但打开eclipse时还是提示需 ...
- ffmpeg.exe dos下怎么用 放在哪里
系统:windows 7 1.先看dos界面,win7下这里输入cmd, 看路径 2.把下载的ffmpeg.exe复制到这个路径下 3.这就可以用命令了 1.mp4说明这个文件是跟ffmpeg.ex ...
- HTML页面和JSP页面禁止缓存
一.JSP页面禁止缓存: 防止浏览器缓存当前访问的JSP动态页面,可以采用如下的方式进行设置,此效果如下的“HTML禁止缓存”: % 将过期日期设置为一个过去时间response.setHeader( ...
- NPOI操作EXCEL(一)——npoi基础
去年项目有一个子模块需要解析上百张不一样的excel表格入库,当时用的NPOI,做了很久...也尝试想把代码分享到oschina,结果没坚持两篇就放弃了. 赶巧的是,昨天运营那边提出要录入一些基础数据 ...
- Visual Studio 2015 Pre Secondary Installer 在哪里
安装vs2015 pre后,会自动打开Secondary Installer, 用于Cross Platform的移动开发框架,包括Cordova插件.若安装失败,启动程序位置: "D:\P ...
- asp.net mvc4+mysql做一个简单分页组件(部分视图)
在开始做mysql分页功能组件前,便设定的是要有一定可复用性.先在项目里Views文件夹下右键新建名为_PaginationComponent.cshtml,这里html及css我采用的bootstr ...
- 查询当前Database下所有Datatable及所有记录数
DECLARE @TableName varchar(); CREATE TABLE #GetRecordingTempTable([id] [INT] IDENTITY(,) NOT NULL, [ ...
- 精通Web Analytics 2.0 (7) 第五章:荣耀之钥:度量成功
精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第五章:荣耀之钥:度量成功 我们的分析师常常得不到我们应得的喜欢,尊重和资金,因为我们没有充分地衡量一个黄金概念:成果.因为我们 ...