开发记录————spring mvc 获取页面数据

来源:互联网 发布:mac office 彻底关闭 编辑:程序博客网 时间:2024/04/30 07:02
本周开发终于回到了spring mvc的框架,然而我拿到手的时候居然已经忘了spring mvc是啥了,从某种意义上来说我确实可以反省下了,不过大半年没写spring就已经忘的差不多了。嘛,但这并不影响我今天的记录,毕竟我记录只是一个很小的部分。但还是要注意要好好的再看看spring mvc的开发记录,好好的再回忆和强化下自己的技术。这次主要是修改一个bug,提交表单的时候出现了400的一个报错。我们知道,spring mvc的页面数据一般使用from表单提交,后台直接用实体接受,然后传入service层开始进行事物运算。可是如果在实体里出现了如特殊类型的字段,非空字段但却允许页面存在空值,类似于不少这样的情况,那我们该怎么做呢?方法一,使用spring mvc拦截器。spring mvc允许我们自己写拦截器,利用这个机制,我们可以在spring mvc的控制文件,就是在后缀为.xml的文件里添加配置,然后拦截这些特殊的数据,然后进入自己写好的util工具里进行处理。下面就那这次的BUG举个例子:这次是由前台传入一个数据为空的timestamp类型的字段,但应为本身这个类型的字段不能为空,于是在提交表单时直接报400错误,都没有进入后台就被拦截了。于是我们可以用方法一处理首先在util里写一个处理此问题的工具类
public class TimestampConverter implements Converter<String, Timestamp>{    @Override    public Timestamp convert(String timeStr) {        Timestamp date=null;        if(StringUtils.checkNotEmpty(timeStr)){            long time=Long.valueOf(timeStr);            date=new Timestamp(time);        }        return t;    }}
然后在配置文件中添加
<mvc:annotation-driven  conversion-service="conversionService"/> <bean id="conversionService"        class="org.springframework.context.support.ConversionServiceFactoryBean">        <property name="converters">            <list>                <bean class="xxx.xxx.xxx.utils.TimestampConverter"></bean><!-- 此处填写自己的工具类路劲 -->            </list>        </property></bean>

——————(方法参考开源中国网友,感谢小小懒羊羊分享此方法,原址http://www.oschina.net/code/snippet_2438265_52717)

于是这就可以解决传值的问题了。但是我是改BUG,虽然这样做没有问题,但是最为一个菜鸟我还没有能理解什么是拦截器,我要怎么添加拦截器(虽然我觉得这是不可能的)。又或者因为某些原因我无法修改拦截器的内容,又或者我只要改这一个地方,加拦截器太烦了。于是,方法二:利用spring mvc 的request方法直接获取页面数据
    @RepusetMapping(value="add",method=RequestMethed.POST)    @ReponseBody    public Return add(Model model, Request request){        String time = request.getParamter("time");        //以下是原controller        Return rs = Model.add(model,LoginSessionHelper.getCurrentUser(request),time);//传入service层进行处理        return rs;    }
方法二的好处在于方便,直接获取页面数据再进行自己处理,但如果面对大量的地方需要修改,还是使用方法一老老实实的写拦截器,不要搞这些投机取巧的方法。但我想说的是,在有些情况下,当你无法实现一个功能时不妨换个方法思考,毕竟对于像我一样的菜鸟来说,完成功能才是首要考虑条件。(写博客的时候controller这个单词我查了三遍你敢信?-_-|||)
0 0