错误描述 :
对于以下一段简单前端代码示例:
<!-- 请求对象实体类 -->
<form action="SpringMVCHandler/testObjectProperties" method="post">
学号:<input type="text" name="id"><br>
姓名:<input type="text" name="name"><br>
家庭住址:<input type="text" name="address.homeAddress"><br>
学校地址:<input type="text" name="address.schoolAddress"><br>
<input type="submit" value="实体类传参(便捷)">
</form>
以及后台接收代码:
@RequestMapping(value="testObjectProperties")
public String testCookieValue(Student student) {//student 必须与form表单中的属性一致(支持级联属性)
System.out.println(student.getId()+" "+student.getName()+" "+student.getAddress().getHomeAddress()+" "+student.getAddress().getSchoolAddress());
return "success";
}
以及两个实体类Student以及Address
Student.java
package org.zlc.entity;
public class Student {
private int id;
private String name;
private Address address;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
Address.java
package org.zlc.entity;
public class Address {
private String homeAddress;
private String SchoolAddress;
public String getHomeAddress() {
return homeAddress;
}
public void setHomeAddress(String homeAddress) {
this.homeAddress = homeAddress;
}
public String getSchoolAddress() {
return SchoolAddress;
}
public void setSchoolAddress(String schoolAddress) {
SchoolAddress = schoolAddress;
}
}
在前端输入后控制台会输出输入内容
但如果为中文则会输出乱码
解决办法:
在web.xml添加字符集拦截器
<!-- 字符集过滤器 -->
<filter>
<description>字符集过滤器</description>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<description>字符集编码</description>
<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>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
中文不再乱码