springmvc之类型转化器

类型转化器,需要在jsp上捕获到要转化的数据,然后交给控制器的参数,参数为要转化的格式

JSP

    <form action="${pageContext.request.contextPath }/date/converter.do" method="post">
        ${exmsg}</br>
        <input type="text" name="birthday" value="${birthday}"/>
        <input type="submit" value="提交生日"/>
    </form>

控制器

    @RequestMapping("/data.do")
    public String doData(Date birthday){//Date birthday的Date使我们从jsp页面上对birthday获取到的值所要转化的格式
        System.out.println(birthday);
        return "/welcome";
    }
    
    @ExceptionHandler(TypeMismatchException.class)//控制器抛出来的异常会被这个方法捕获,并且执行
    public ModelAndView excepetion(HttpServletRequest request,Exception ex){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("ex",ex);
        String birthday =  request.getParameter("birthday");
        modelAndView.addObject("birthday",birthday);
        modelAndView.setViewName("/controller");
        
        return modelAndView;
    }

转化器

需要实现Converter<参数1,参数2>接口,参数1是我们获取的对象的值类型,参数2是我们要讲对象值转化为的类型

例如该例子的Date转化器

public class DateConverter implements Converter<String, Date>{
    @Override
    public Date convert(String arg0) {
        // TODO Auto-generated method stub
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");
        if(arg0 != null&&!"".equals(arg0)){
            try {
                return simpleDateFormat.parse(arg0);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                throw new TypeMismatchException(arg0, Date.class);//arg0要匹配的值,Date.class要匹配的类型
            }
        }else{
            throw new TypeMismatchException(arg0, Date.class);
        }            
    }
}


springmvc.xml配置

    <context:component-scan base-package="com.control"></context:component-scan>
    <!-- 注册处理器 -->
    <bean id="/my.do" class="com.control.MyController"></bean>
    <bean id="baidu" class="org.springframework.web.servlet.view.RedirectView">
        <property name="url" value="http://www.baidu.com"></property>
    </bean>
 
    <!-- 视图解析器 -->
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- <property name="prefix" value="/WEB-INF/"></property> -->
        <property name="suffix" value=".jsp"></property>
    </bean>  
    <!-- 注册转化器 -->
    <bean id="mycontroller" class="com.converter.MyConverter"/>
    <bean id="dateConverter" class="com.converter.DateConverter"/>
    <!-- 注册转化器工厂 -->
    <bean id="controllerService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters" ref="dateConverter"></property>
    
    </bean>

    <!--启动转化器 -->
        <mvc:annotation-driven conversion-service="controllerService"/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值