1.Controller层代码:
需要接收一个User类型的List集合,该集合封装在一个VO类中 先看Controller层代码:
//请求数据为集合
@RequestMapping(value = "/requst4")
@ResponseBody //告诉SpringMvc框架,不进行视图跳转,只回写数据
//void表示响应体为空
public void request4(VO vo) throws Exception {
System.out.println(vo);
}
2.jsp表单代码:
<form action="/user/requst4" method="post">
<input type="text" name="userList[0].username"><br>
<input type="text" name="userList[0].sex"><br>
<input type="text" name="userList[1].username"><br>
<input type="text" name="userList[1].sex"><br>
<input type="submit"><br>
</form>
3.首次提交,报了500
经过异常信息的分析,推测是User类没有提供无参构造器,提供后再次测试
4.第二次测试,报400
根据提示,应该是参数匹配出错,观察User类的定义
没有看出有什么问题,但怀疑是sex匹配有误,抱着试一试的心态,将测试的性别写为英文字符n
此时没有报错了,但后台中文出现乱码,此时可以推测是编码问题,且之前的sex中文字符输入报错,应该也是由编码引起的
5.解决:
在web.xml配置编码过滤器,代码如下:
<!-- 配置编码过滤器-->
<filter>
<filter-name>CharacterEncoding</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>
</filter>
<filter-mapping>
<filter-name>CharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
再进行测试:
没有报错,且中文正常,成功解决
6.总结
SpirngMVC接收集合类型的参数
1.实体类要提供无参构造方法
2.出现乱码需要配置编码过滤器
3.中文单个字符匹配报400也是编码的问题,解决方案和2一样