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=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>();
{
//-----------------------------------------------
// 设置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、测试结果

[Spring MVC] - 表单提交的更多相关文章

  1. Spring MVC表单提交

    实际应用中,列表中的单条记录的修改,可能需要传很多对象参数到后台服务器,Spring MVC表单标签<form:> 提供了一种简洁的提交方式. <form id="form ...

  2. Spring MVC表单提交中文数据出现乱码

    http://jiessiedyh.iteye.com/blog/475541 http://bigcat.easymorse.com/?p=474 Spring MVC 教程,快速入门,深入分析 h ...

  3. spring mvc 表单提交 乱码

    1.在web.xml添加过滤器: <filter> <filter-name>SpringCharacterEncoding</filter-name> <f ...

  4. [Spring MVC] 表单提交日期转换问题,比如可能导致封装实体类时400错误

    三种格式的InitBinder @InitBinder//https://stackoverflow.com/questions/20616319/the-request-sent-by-the-cl ...

  5. Spring MVC - 表单处理示例

    环境搭建 环境: Intellij IDEA Spring MVC 完整的项目文件结构如下所示: Student.java package com.ktao.controller; public cl ...

  6. Spring MVC表单处理

    以下示例演示如何编写一个简单的基于Web的应用程序,它使用Spring Web MVC框架使用HTML表单. 首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework ...

  7. 使用Spring MVC表单标(转)

    概述     在低版本的Spring中,你必须通过JSTL或<spring:bind>将表单对象绑定到HTML表单页面中,对于习惯了Struts表单标签的开发者来说,Spring MVC的 ...

  8. Spring MVC表单标签

    从Spring 2.0开始,Spring MVC开始全面支持表单标签,通过Spring MVC表单标签,我们可以很容易地将控制器相关的表单对象绑定到HTML表单元素中. form标签     和使用任 ...

  9. spring mvc表单form值自动传到javabean-注解@ModelAttribute

    直接通过Form Bean进行表单可以简化表单提交的处理,特别是对于复杂表单,过于简单的表单就不建议了,因为毕竟需要额外创建一个Form Bean.前段时间项目中有一个比较复杂的表单,有多层次而且涉及 ...

随机推荐

  1. 20150207读书笔记<深入理解计算机系统2-1>

    第二章 信息存储 (1)  多数计算机以一个字节作为最小可寻址的存储器单元. 机器级程序将存储器看成一个非常大的字节数组,称为虚拟存储器. 存储器的每个字节都由唯一的数字标识,称为它的地址. 所有可能 ...

  2. javascript new

    1. 仅function可以使用new 2. function使用new时,会拷贝function中this的内容给新对象,并将function的prototype指向新对象(如果该function没 ...

  3. PL/sql语法单元

    1.字符集 PL/SQL的字符集包括: 所有大小写字母:包括A~Z和a~z. 数字:包括0~9. 空白字符:包括制表符.空格和回车符 其他常用英文符号 2.标识符 标识符用于定义PL/sql变量.常量 ...

  4. JavaWeb chapter11 编写无脚本的JSP页面

    1.  JSP表达式语言EL 使用jsp:getProperty的property属性只能访问Bean的属性,不能访问嵌套的属性. JSP EL(表达式语言 Expression Language), ...

  5. 58.com qiyi

    using AnfleCrawler.Common; using System; using System.Collections.Generic; using System.Linq; using ...

  6. C语言程序设计第一次作业

    同学们,我们已经留了两次实验了,请大家将这两次的实验课内容写成实验报告在截止日期前进行提交. 截止日期:2016-10-7 23:00 实验一: 编程打印5行的倒三角形,第一行打印9个*,第二行7个* ...

  7. JDBCl链接中Statement

    作用:创建的Statement对象执行SQL语句 (1)对象有Connection对象调用createStatement()方法创建 (2)有Statement对象调用executeUpdate()方 ...

  8. Xcode与OX 版本对照表

    xcode1.0-xcode2.x 版本 OS X运行版本 OS X SDK(s) 1.0 OS X Panther(10.3.x) OS X Puma(10.1.x),OS X Jaguar(10. ...

  9. samba 配置

    sudo apt-get install samba sudo apt-get install kdenetwork-filesharing vi /etc/samba/smb.conf [Share ...

  10. tensorflow2

    # step1 加载包import tensorflow as tf import numpy as np # step2 输入:随机产生数据 # Create 100 phony x, y data ...