springmvc中@RequestParam接收值为乱码问题解决

来源:互联网 发布:口袋密令网络不给力 编辑:程序博客网 时间:2024/06/05 14:07

jsp界面提交值之后进入pagingQuery方法,此时userQueryParams对象进行了封装,对象中的属性也并非乱码,载入到map中再传入到方法1之后,此时userQueryParams中的中的属性loginNameParam打印出来出现了乱码,下面就将我解决的方案总结下。

方法1   

@RequestMapping(value="list",method = RequestMethod.GET)

    public String list(@RequestParam(value = "page")int page,
                       @RequestParam(value = "loginNameParam",required = false)StringloginNameParam,
                       @RequestParam(value = "displayNameParam",required = false)String displayNameParam,
                       Model model){
        UserQueryParams userQueryParams = new UserQueryParams(displayNameParam,loginNameParam);
        PageBounds pageBounds = new PageBounds(page,15,Order.formString("id.asc"));
        model.addAttribute("userList", userService.getUserList(userQueryParams, pageBounds));
        model.addAttribute("userQueryParams",userQueryParams);
        return "/list";
    }

方法2
    @RequestMapping(value = "pagingQuery",method = RequestMethod.POST)
    public ModelAndView query(@ModelAttribute("userQueryParams")UserQueryParams userQueryParams,
                        @RequestParam(value="page",defaultValue="1")int page) throws Exception{
        Map<String,Object> map = BeanMapper.map(userQueryParams,Map.class);
        map.put("page",page);


        return new ModelAndView("redirect:/list").addAllObjects(map);//跳转到方法1

    }



要说明的是,我这里遇到的问题并非是界面传值出现乱码,首先检查web.xml中是否有如下配置

<filter>
        <filter-name>encodingFilter</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>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


再检查在spring-mvc.xml的配置中加入编码

<mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg value="UTF-8" />
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>


我的配置中均有出现这个配置,但是还是解决不了我这里的@RequestParam乱码,后来无意间看了一篇博客,在所在tomcat中加入编码配置后,乱码就不存在了

如下在tomcat的server.xml中加入 URIEncoding="UTF-8"

<Connector  URIEncoding="UTF-8"  port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

希望对大家有帮助

博客地址 http://xph.iteye.com/blog/1570244

1 0
原创粉丝点击