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, ...
随机推荐
- 洛谷10月月赛Round.1| P3398 仓鼠找sugar[LCA]
题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而他的基友同时要从他的卧室(c) ...
- Spring中的cglib动态代理
Spring中的cglib动态代理 cglib:Code Generation library, 基于ASM(java字节码操作码)的高性能代码生成包 被许多AOP框架使用 区别于JDK动态代理,cg ...
- Python的with用法理解
Python的with理解 标签(空格分隔): Python with做为一种上下文管理器,在Python中的作用可以简单的理解为是用来代替try...except...finally的处理流程. w ...
- windows forms 上一个类似于wpf snoop 的工具: Hawkeye
windows forms 上一个类似于wpf snoop 的工具: Hawkeye 周银辉 WPF上有snoop这样的run time object editor让人用着很爽, 今天搜到了一个for ...
- Python 字符串
Python访问字符串中的值 Python不支持单字符类型,单字符也在Python也是作为一个字符串使用. Python访问子字符串,可以使用方括号来截取字符串,如下实例: #!/usr/bin/py ...
- 【转】NuGet.org 无法访问的解决方法
打开Nuget,发现又出问题了:未能解析此远程名称:’nuget.org’. 在浏览器中输入 http://nuget.org 会发现是无法打开的. 在cmd命令行里输入: nslookup nuge ...
- Oracle系列——开发中奇葩问题你遇到几个(一)
前言:在使用oracle数据进行开发的时候有没有经常出现一些很奇怪.很纳闷.很无厘头的问题呢.下面是本人使用oracle一段时间遇到的问题小节,在此做个记录,方便以后再遇到类似的问题能快速解决.如果你 ...
- 通过CAGradientLayer制作渐变色效果(转)
转载自:http://blog.it985.com/7986.html 看了极客学院的视频之后写的一篇博客,觉得不错,还是作为笔记使用. 简单介绍一下CAGradientLayer吧. Gradien ...
- SQL查询为什么不推荐使用select count(*)
select count(1). count(字段名) .count(*) 的区别
- 关于redis的keys命令的性能问题
KEYS pattern 查找所有符合给定模式 pattern 的 key . KEYS * 匹配数据库中所有 key . KEYS h?llo 匹配 hello , hallo 和 hxllo 等. ...