Spring MVC处理参数Convert

Springmvc.xml

配置convert,xml中配置多个相同的泛型时,xml里配置的convert会从上到下挨个执行。

    <!-- 配置注解驱动,并配置convert -->
    <mvc:annotation-driven conversion-service="myConversionService"/>

    <!-- 配置多个convert -->
    <bean id="myConversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
         <property name="converters">
             <list>
                 <bean class="com.gmtx.system.convertre.DateConverter"/>
                 <bean class="com.gmtx.system.convertre.TimestampConverter"/>
                 <bean class="com.gmtx.system.convertre.NumberConverter"/>
                 <bean class="com.gmtx.system.convertre.BooleanConverter"/>
                 <bean class="com.gmtx.system.convertre.IntegerConverter"/>
                 <bean class="com.gmtx.system.convertre.FloatConverter"/>
                 <bean class="com.gmtx.system.convertre.DoubleConverter"/>
                 <bean class="com.gmtx.system.convertre.LongConverter"/>
                 <bean class="com.gmtx.system.convertre.ShortConverter"/>
                 <bean class="com.gmtx.system.convertre.CharConverter"/>
                 <bean class="com.gmtx.system.convertre.StringConvert"/>
                 <!-- DateTimeConverter和DateConverter都是处理成Date类型,前者是处理成年月日,后者是处理成yyyy-MM-dd HH:mm:ss,先用前面一个再用后面一个,最终以后面的为准 -->
                 <bean class="com.gmtx.system.convertre.DateTimeConverter"/>
             </list>
         </property>
     </bean>    

创建Convert

新建一个时间字符串转时间戳的convert。

implements Converter<String, Timestamp>这里的泛型一定要写,这里决定了你需要 使用哪个convert。xml中配置多个相同的泛型时,xml里配置的convert会从上到下挨个执行。

package com.gmtx.system.convertre;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.core.convert.converter.Converter;

/**
 * 時間轉時間戳
 */
public class TimestampConverter implements Converter<String, Timestamp> {

    public Timestamp convert(String timeStr) {
        Timestamp t = null;
        if (timeStr!=null && timeStr != "") {
             SimpleDateFormat format =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             Date date = null;
            try {
                date = format.parse(timeStr);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            //日期转时间戳(毫秒)
            t = new Timestamp(date.getTime());
        }
        return t;
    }
}

使用Convert

在Controller中使用,dt的类型决定使用哪个Convert,前面的@RequestParam在参数名和变量名一样的时候可以不写。

@Controller
@RequestMapping("/common")
public class CommonController {

    /**
     * @param dt dt的class类型决定使用哪个Convert
     * @return list的json集合
     */
    @RequestMapping(value="/testConvert",method={RequestMethod.GET,RequestMethod.POST})
    @ResponseBody
    public static Object testConvert(@RequestParam(value = "date") Timestamp dt){
        List<Entity> list = new ArrayList<Entity>();
        Entity e = new Entity();
        e.setId("id1");
        e.setBirth(dt.getTime()+"");
        list.add(e);
        return list;
    }
}

测试

spring mvc会自动实现前端传一个对象的json会自动封装到实体对象里。实体的字段也会用到上面的convert配置转换。

原文地址:https://www.cnblogs.com/aeolian/p/11971286.html

时间: 2024-11-14 01:38:07

Spring MVC处理参数Convert的相关文章

Spring基础系列14 -- Spring MVC 请求参数的几种获取方法

Spring MVC 请求参数的几种获取方法 转载:http://www.cnblogs.com/leiOOlei/p/3658147.html 一.      通过@PathVariabl获取路径中的参数 @RequestMapping(value="user/{id}/{name}",method=RequestMethod.GET) public String printMessage1(@PathVariable String id,@PathVariable String n

Spring MVC请求参数绑定

所谓请求参数绑定,就是在控制器方法中,将请求参数绑定到方法参数上 @RequestParam 绑定单个请求参数到方法参数上 @RequestParam("id") Integer id 将请求参数名为id的变量,绑定到id参数上,如果不知道@RequestParam值,默认从请求参数中取和变量名相同的请求参数 @RequestParam(value = "id",required = false) Integer id 可以通过指定required参数来指定是否必须

Spring MVC redirect参数

不同的Controller之间使用redirect的话,会把上一个controller的mapping以及参数附加在目标controller的对应的URL后面当成参数,这样子看起来很不爽:.../success/?param1=xxx&param2=xxx. 经过发现,对于Spring 3.1: <mvc:annotation-driven ignoreDefaultModelOnRedirect="true" /> 对于For Spring >= 4.0 u

关于spring mvc 请求参数校验使用中的坑 。 maven 生命周期,线程池杂识

//一.使用@Valid @NotNull 启动项目请求,参数为空, // 好像没有效果.原因是只加了jar包:javax.validation:validation-api,这个包是一个规范,并没有实现 // spring 的默认实现是 org.hibernate:hibernate-validator 加上即可. // 再次请求 返回400, //看日志是校验未通过,接下来就是校验异常后处理了.使用以下代码处理 @ResponseBody @ExceptionHandler(MethodAr

spring mvc绑定参数之日期类型转换

问题复现步骤: 1.提交表单,参数为: 2.接收参数类型为product实体类,如下 3.错误日志如下: org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errorsField error in object 'product' on field 'departureTime': rejected value [2020-02-10

Spring MVC 绑定参数

一.最简单的JavaBean的绑定 假设我们有一个简单的Person类 public class Person { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void se

spring mvc接收参数方式,json格式返回请求数据

1 使用方法形参使用变量接收提交的数据 2 在方法的形参中使用模型接收数据 3 如果在提交的表单中有多个数据模型,需要创建一个新的Bean,里面的属性是要接收的对象变量. 4 接收提交的日期字符串,转换成Date类型.需要使用@InitBinder来转换 5 批量删除数据,使用数组接收要删除的id,在页面中使用相同name属性 6 批量提交,如何接收数据?需要新建一个Bean,List或者LinkedList/ArrayList来接收. 7 在两个不同的action方法之间执行转发.在retur

spring mvc 接收参数方式

1.使用HttpServletRequest接收 java 代码 /** * 测试 HttpServletRequest 接收参数 * * */ @RequestMapping(value = "/test") @ResponseBody public String queryAll(HttpServletRequest request) { System.out.println(request.getParameter("date")); return reque

spring mvc 中文参数乱码

最近做项目,springmvc的url中文参数乱码: 请求url: http://localhost:8080/supply/supply_list.htm?productName=测试&isHomePage= 在后端: @RequestMapping(value = SupplyURL.SUPPLY_LIST, method = RequestMethod.GET) public String toSupplyList (Model model, String productName) { P