numberformat
@DateTimeFormat是用来验证输入的日期格式;@NumberFormat是用来验证输入的数字格式。有时候,因为输入习惯或某些要求必须改变格式的时候,它们就该上场了。
1.搭建练习环境
(1)搭建SpringMVC环境,配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-APP xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <!-- 配置字符编码过滤器 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 处理PUT和DELETE等的请求 --> <filter> <filter-name>hiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>hiddenHttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 核心控制器:作用,分发请求 --> <servlet> <servlet-name>springDispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextconfiglocation</param-name> <param-value>classpath:/springmvc-context.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springDispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
(2)配置springmvc-context.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 配置要扫描的包 --> <context:component-scan base-package="com.bestgo.springmvc"/> <!-- 视图解析器,默认为转发 --> <bean id="internalResourceViewresolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> <!-- 国际化 --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename" value="i18n"/> </bean> <!-- 处理静态资源 --> <mvc:default-servlet-handler default-servlet-name="default"/> <mvc:annotation-driven/> </beans>(3)新建Employee.java
package com.bestgo.springmvc.bean; import com.bestgo.springmvc.bean.Department; import java.util.Date; public class Employee { private integer id; private String lastName; private String email; //1 male, 0 female private Integer gender; private Department department; private Date birthday; private double salary; public Employee() { } public Employee(Integer id, String lastName, String email, Integer gender, Department department, Date birthday, double salary) { this.id = id; this.lastName = lastName; this.email = email; this.gender = gender; this.department = department; this.birthday = birthday; this.salary = salary; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Integer getGender() { return gender; } public void setGender(Integer gender) { this.gender = gender; } public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } public Employee(Integer id, String lastName, String email, Integer gender, Department department) { super(); this.id = id; this.lastName = lastName; this.email = email; this.gender = gender; this.department = department; } @Override public String toString() { return "Employee{" + "id=" + id + ", lastName='" + lastName + '\'' + ", email='" + email + '\'' + ", gender=" + gender + ", department=" + department + ", birthday=" + birthday + ", salary=" + salary + '}'; } }
(4)新建Department.java
package com.bestgo.springmvc.bean; public class Department { private Integer id; private String departmentName; public Department() { } public Department(int i, String string) { this.id = i; this.departmentName = string; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getDepartmentName() { return departmentName; } public void setDepartmentName(String departmentName) { this.departmentName = departmentName; } @Override public String toString() { return "Department [id=" + id + ", departmentName=" + departmentName + "]"; } }(5)新建EmployeeDao.java
package com.bestgo.springmvc.dao; import java.util.Collection; import java.util.HashMap; import java.util.Map; import com.bestgo.springmvc.bean.Department; import com.bestgo.springmvc.bean.Employee; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @Repository public class EmployeeDao { private static Map<Integer, Employee> employees = null; @Autowired private DepartmentDao departmentDao; static{ employees = new HashMap<Integer, Employee>(); //只是为了测试,这里充当从数据库查询的数据 employees.put(1001, new Employee(1001, "E-AA", "[email protected]", 1, new Department(101, "D-AA"))); employees.put(1002, new Employee(1002, "E-BB", "[email protected]", 1, new Department(102, "D-BB"))); employees.put(1003, new Employee(1003, "E-CC", "[email protected]", 0, new Department(103, "D-CC"))); employees.put(1004, new Employee(1004, "E-DD", "[email protected]", 0, new Department(104, "D-DD"))); employees.put(1005, new Employee(1005, "E-EE", "[email protected]", 1, new Department(105, "D-EE"))); } private static Integer initId = 1006; public void saveOrUpdate(Employee employee){ if(employee.getId() == null){ employee.setId(initId++); } employee.setDepartment(departmentDao.getDepartment(employee.getDepartment().getId())); employees.put(employee.getId(), employee); } public Collection<Employee> getAll(){ return employees.values(); } public Employee get(Integer id){ return employees.get(id); } public void delete(Integer id){ employees.remove(id); } }
(6)新建DepartmentDao.java
package com.bestgo.springmvc.dao; import com.bestgo.springmvc.bean.Department; import org.springframework.stereotype.Repository; import java.util.Collection; import java.util.HashMap; import java.util.Map; @Repository public class DepartmentDao { private static Map<Integer, Department> departments = null; static{ departments = new HashMap<Integer, Department>(); //只是为了测试,这里充当从数据库查询的数据 departments.put(101, new Department(101, "D-AA")); departments.put(102, new Department(102, "D-BB")); departments.put(103, new Department(103, "D-CC")); departments.put(104, new Department(104, "D-DD")); departments.put(105, new Department(105, "D-EE")); } public Collection<Department> getDepartments(){ return departments.values(); } public Department getDepartment(Integer id){ return departments.get(id); } }
(7)新建EmployeeHandler.java
package com.bestgo.springmvc.handler; import com.bestgo.springmvc.bean.Department; import com.bestgo.springmvc.bean.Employee; import com.bestgo.springmvc.dao.DepartmentDao; import com.bestgo.springmvc.dao.EmployeeDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.controller; import org.springframework.web.bind.annotation.*; import java.util.Collection; import java.util.Map; @Controller @requestMapping("/employee") public class EmployeeHandler { @Autowired private EmployeeDao employeeDao; @Autowired private DepartmentDao departmentDao; @RequestMapping(value = "/get_employee_list",method = RequestMethod.GET) public String getEmployeeList(Map map){ Collection<Employee> empList = employeeDao.getAll(); map.put("empList",empList); return "list"; } @RequestMapping("/to_add_emp") public String toAddEmp(Map map){ Collection<Department> departments = departmentDao.getDepartments(); map.put("deptList",departments); map.put("command",new Employee()); return "add"; } @RequestMapping("/do_add_emp") public String doAddEmp(Employee employee){ System.out.println("要添加的员工对象--》"+employee); employeeDao.saveOrUpdate(employee); return "redirect:get_employee_list"; } @RequestMapping(value = "/delete_emp/{id}",method = RequestMethod.DELETE) public String deleteEmp(@PathVariable("id") Integer id){ employeeDao.delete(id); return "redirect:/employee/get_employee_list"; } @RequestMapping(value = "/to_update_emp/{id}",method = RequestMethod.GET) public String toUpdateEmp(@PathVariable("id") Integer id,Map map){ Employee employee = employeeDao.get(id); map.put("employee",employee); Collection<Department> departments = departmentDao.getDepartments(); map.put("departments",departments); return "update"; } @RequestMapping(value = "/do_update_emp",method = RequestMethod.PUT) public String doUpdateEmp(Employee employee){ employeeDao.saveOrUpdate(employee); return "redirect:/employee/get_employee_list"; } @ModelAttribute public void getEmployee(@RequestParam(value = "id",required = false)Integer id,Map map){ if(id != null){ Employee employee = employeeDao.get(id); map.put("employee",employee); } } }
(8)新建web/index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <a href="${pageContext.request.contextpath}/employee/get_employee_list">getEmployeeList</a> </body> </html>
(9)新建web/WEB-INF/views/list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <!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>Insert title here</title> <script type="application/JavaScript" src="${pageContext.request.contextPath}/scripts/jquery-1.9.1.min.js"></script> <script type="application/javascript"> $(function(){ $(".deleteEmp").click(function(){ var href = this.href; $("#deleteEmpForm").attr("action",href).submit(); return false; }); }); </script> </head> <body> 员工列表:<a href="${pageContext.request.contextPath }/employee/to_add_emp">添加员工</a> <hr> <table width="80%" border="1"> <tr> <th>员工编号</th> <th>员工名称</th> <th>邮件地址</th> <th>性别</th> <th>部门名称</th> <th></th> <th></th> </tr> <form id="deleteEmpForm" action="" method="post"> <input type="hidden" name="_method" value="delete"> </form> <c:foreach items="${empList}" var="emp"> <tr> <td>${emp.id }</td> <td>${emp.lastName }</td> <td>${emp.email }</td> <td>${emp.gender==1?"男":"女" }</td> <td>${emp.department.departmentName }</td> <td><a href="${pageContext.request.contextPath}/employee/to_update_emp/${emp.id}">修改</a></td> <td><a class="deleteEmp" href="${pageContext.request.contextPath}/employee/delete_emp/${emp.id}">删除</a></td> </tr> </c:forEach> </table> </body> </html>
(10)新建web/WEB-INF/add.jsp
<%@ page import="java.util.Map" %> <%@ page import="java.util.HashMap" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <!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>Insert title here</title> </head> <body> <% Map map = new HashMap(); map.put("1","男"); map.put("0","女"); request.setattribute("genders",map); %> <form:form action="${pageContext.request.contextPath}/employee/do_add_emp"> 员工名称:<form:input path="lastName"/><br> 邮件地址:<form:input path="email"/><br> 性别:<form:radiobuttons path="gender" items="${genders}"/><br> 部门:<form:select path="department.id" items="${deptList}" itemLabel="departmentName" itemValue="id"/><br> 生日:<form:input path="birthday"/><br> 工资:<form:input path="salary"/><br> <input type="submit" value="添加"> </form:form> </body> </html>
2.点击运行,开始。。然后进入员工列表页面。
3.点击【添加员工】,进入添加员工页面,并输入信息
4.点击【添加】,此时会报400错误。此时是因为格式转换异常
5.退到添加员工的页面,重新输入新的格式
6.此时会发现通过了添加,并显示了列表页面。说明框架默认日期格式为yyyy/MM/dd;数字格式默认除了点,不能有其他特殊符号
7.但是我想输入的日期格式为"yyyy-MM-dd",输入的数字格式以逗号分隔,比如“222333.55”,分隔为"222,333.55"。那么就要用到@DateTimeFormat(pattern="yyyy-MM-dd")和NumberFormat(pattern="###,###.###"),在Employee.java中加入。
8.再次添加员工信息,按照指定的格式输入
9.此时就会通过了,完美!
文章最后发布于: 2018-03-11 21:19:45
相关阅读
直接引用经典文章来源:https://blog.csdn.net/w05980598/article/details/79007194什么是微服务微服务的概念源于2014年3月Martin
1.0 springMVC 的作用 springMVC 在我看来是用spring的有点来实现MVC架构 这样可以整合许多优秀的框架中的功能例如本篇重点介绍
Spring Security 小记 - @Secured(), @PreAuthorize()
目录Spring Security 小记前言权限注解小坑Spring Security 小记 记录一下Spring Security(版本为4) 中的 @Secured(), @PreAuthor
1.MVC 2.SpringMVC执行流程 Spring MVC是结构最清晰的MVC实现。Controller接收请求,然后返回ModelAndView。 1.springmvc将所
绪论: 在大型的企业应用中,或多或少会用到大量的任务需要处理。如:邮件通知所有将要过期的会员等。 而在批处理任务的过程中,又需要