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 表单提交的更多相关文章

  1. SpringMVC中使用bean来接收form表单提交的参数时的注意点

    这是前辈们对于SpringMVC接收表单数据记录下来的总结经验: SpringMVC接收页面表单参数 springmvc请求参数获取的几种方法 下面是我自己在使用时发现的,前辈们没有记录的细节和注意点 ...

  2. 第6章—渲染web视图—SpringMVC+Thymeleaf 处理表单提交

    SpringMVC+Thymeleaf 处理表单提交 thymleaf处理表单提交的方式和jsp有些类似,也有点不同之处,这里操作一个小Demo,并说明: 1.demo的结构图如下所示: pom.xm ...

  3. SpringMVC(十四):SpringMVC 与表单提交(post/put/delete的用法);form属性设置encrypt='mutilpart/form-data'时,如何正确配置web.xml才能以put方式提交表单

    SpringMVC 与表单提交(post/put/delete的用法) 为了迎合Restful风格,提供的接口可能会包含:put.delete提交方式.在springmvc中实现表单以put.dele ...

  4. springmvc下js控制表单提交(表单提交前检验,提交后获取json返回值)

    这个问题我搞了四天,终于搞懂.因为对js很不熟悉.郁闷的是后台代码出错总可以设置断点调试,前端js代码出错只能通过浏览器提供一些运行数据来分析,很不习惯. 首先说下逻辑:这是一个注册功能,我希望,注册 ...

  5. SpringMVC 表单标签 & 处理静态资源

    使用 Spring 的表单标签 通过 SpringMVC 的表单标签可以实现将模型数据中的属性和 HTML 表单元素相绑定,以实现表单数据更便捷编辑和表单值的回显. form 标签 一般情况下,通过 ...

  6. 浏览器下载/导出文件 及jQuery表单提交

    1 比如以下按钮, 用于导出文件,如EXCEL文件. <li> <button class="whiteBg btn2" onclick="doExp( ...

  7. (转载)SPRINGMVC表单标签简介

    SpringMVC表单标签简介 在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍Spri ...

  8. SpringMVC表单标签简介

    在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍SpringMVC的表单标签之前,我们需 ...

  9. 【转载】springMVC表单校验+全注解

    在这篇文章中,我们将学习如何使用Spring表单标签, 表单验证使用 JSR303 的验证注解,hibernate-validators,提供了使用MessageSource和访问静态资源(如CSS, ...

随机推荐

  1. Vijos1404遭遇战[最短路建模]

    背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC ...

  2. H5框架之Bootstrap(二)

    H5框架之Bootstrap(二) 突然感觉不知道写啥子,脑子里面没水了,可能是因为今晚要出去浪,哈哈~~~提前提醒大家平安夜要回家哦,圣诞节生00000000000这么多蛋....继续 上一篇的已经 ...

  3. 三种方法查看MySQL数据库的版本

    1.使用-V参数 首先我们想到的肯定就是查看版本号的参数命令,参数为-V(大写字母)或者--version 使用方法: D:\xampp\mysql\bin>mysql -V 或者 D:\xam ...

  4. [No00006D]下载离线版的github for windows【以Github for Windows 3.0.110.为例】

    目录 先上地址后讲原理: 原理: 11个目录的文件怎么一口气下载呢? 最后,把下好的文件批量名,同时将GitHub.exe.manifest也放到软件根目录下(与GitHub.exe同级): 今后的猜 ...

  5. 关于ipa和apk文件的解压

    移动互联网中,主要的两个平台是Android和ios,android上文件的安装包是后缀名为apk的文件,ios上文件的安装包是后缀名为ipa的文件,在本文分析一下这两种文件的特点,以及如何用程序去解 ...

  6. CSS让图片垂直居中的几种技巧

    在网页设计过程中,有时候会希望图片垂直居中的情况.而且,需要垂直居中的图片的高度也不确定,这就会给页面的布局带来一定的挑战.下面总结了一下,曾经使用过的几种方法来使图片垂直居中,除了第一种方法只限于标 ...

  7. 你一无所知的CSS

    也许标题有点夸大了.虽然不能完全保证大家都不知道这些,但是这也算是一个好机会检测下你是否知道或使用过下面的内容. Selectors Root :root { }  使用root可以让你在DOM中选择 ...

  8. mysql CREATE USER

    CREATE USER 'Rhine'@'%' IDENTIFIED BY 'Rhine@2015'; GRANT ALL ON *.* TO 'Rhine'@'%'; flush privilege ...

  9. jsonp接口的xss防范

    防范方式也很简单,只要在header里输出类型设置为javascript即可: 1 header('Content-type: text/javascript;charset=utf-8');

  10. hashlib 和 hmac

    import hashlib hash = hashlib.md5([bytes('SALT_STRING', encoding='utf-8’)]) #SALT_STRING :加盐 hash.up ...