SpringMV中POJO,Date等复杂类型的参数绑定

POJO

1.表单数据


    
币名:
货币总量:
核心算法:
区块时间:
啥:
简介:
ico成本:

2.后台Controller

  @RequestMapping(value = "addOne", method = RequestMethod.POST)
    public ModelAndView addOne(Coin coin)throws Exception{
        ModelAndView mav = new ModelAndView();
        coinDao.addOne(coin);
        mav.setViewName("redirect:trade");
        return  mav;
    }
}

3.注意事项

  1. 标签name要与对象属性名一致。

  2. 不要求每个属性都有对应的

  3. 不用加@RequestParam

  4. 只能传简单类型的属性参数,若对象属性存在复杂类型(Date; pojo)参数是传不过去的。

Date

1.Converter配置(springmvc.xml)






    
        
        
        
        
    


2.自定义的converter

package cn.vituaction.controller.converter;

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

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

public class CoinDateConverter implements Converter {
    @Override
    public Date convert(String source) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        try{
            Date date = simpleDateFormat.parse(source);
            return date;
        }catch (ParseException e){
            e.printStackTrace();
        }
        return null;
    }
}

这样,表单中与Date属性对应的数据,就会从String类型转为Date类型赋给对象的Date类型属性,再传入数据库(datetime).

注意事项

从Date类型从前端传入数据库成功了,但将数据库中datetime类型数据传入页面又是不一样的操作了

JSP页面


        
                ${coin.name}${coin.supply}${coin.block_time}
                ${coin.hush_function}修改
             

        
        

若不加上则会打出类型“Tue Oct 07 12:04:36 CST 2014”这样的格式。

通过改变type或者pattern可以定义自己需要的格式

文件头记得加上

<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt"%>

但是!可能会出现类似于“: According to TLD or attribute directive in tag file, attribute value does not accept any expressions,”的报错,那么就要将fmt的taglib改为

<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt"%>

似乎是因为jsp版本冲突的原因,但具体为什么,我也搞不清楚??

你可能感兴趣的:(spring,spring,Request)