Spring Boot:application/x-www-form-urlencoded;char
发表时间:2020-10-19
发布人:葵宇科技
浏览次数:86
Spring -Boot:Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported]
问题的出现是如许的,我早年端界面提交数据信息,然后在controller层以对象的情势吸法术据
前端界面:
<form action="/user/saveuser" method="post">
用户ID:<input name="id" type="text"><br>
用户姓名:<input type="text" name="username"><br>
用户年纪:<input type="text" name="age"><br>
账户金额:<input type="text" name="price"><br>
<input type="submit" value="提交">
</form>
controller层
@RequestMapping(value = "saveuser",method=RequestMethod.POST)
public String saveUser(@RequestBody User user){
System.out.println("user"+user);
userMapper.save(user);
return "redirect:/user/findAll";
}
mapper:
@Override
public void save(User user) {
jdbcTemplate.update("insert into user values (?,?,?,?)",user.getId(),user.getUsername(),user.getAge(),user.getPrice());
}
pojo:
@Data
public class User {
@NotNull(message = "id不克不及为空")
private int id;
@NotEmpty(message = "姓名不克不及为空")
@Length(min = 2,message = "字符串长度不克不及小于二")
private String username;
private int age;
@Min(value = 60,message = "价格必须大年夜于60")
private double price;
}
本认为这个小demo会毫无悬念的运行成功,结不雅报了上述缺点,一脸懵逼,因为没有碰见过,作为一个新手,毫不迟疑的就直接搜百度搜谷歌了,乍一看,总结一下本来说到底是编码或者json的问题导致的,这个就R单了。可是歧视仇敌你就错了,网上的解答很具体,然则我的问题对他们全部免疫,我大年夜懵逼到加倍懵逼。
第一个解答是说传json时,设置content-type,肯定跟Ajax相干,然则我又没写Ajax,只是通俗的form表单,但我照样测验测验了一下,我用了@RequestBody,在我前端传过来的数据会主动与实体类对象进行匹配,然则数据完全过不来,所以我改用了@RequestParam,然后直接用String类型进行接收打印到控制台,看看到底是怎么回事
更改后:
@RequestMapping(value = "saveuser",method=RequestMethod.POST)
public String saveUser(@RequestParam String user){
System.out.println("user"+user);
// userMapper.save(user);
return "redirect:/user/findAll";
结不雅打印台出现一段乱码,且打印在控制滔喔赡并不是以{ }情势的,所以我肯定了传过来的数据不是json格局。那么就是乱码了。
开端查乱码,然后就有了我在yml中写了一堆编码的器械
thymeleaf:
prefix: classpath:/templates/
suffix: .html
encoding: UTF-8
mode: HTML5
http:
encoding:
charset: UTF-8
enabled: true
force: true
messages:
encoding: UTF-8
server:
port: 8080
tomcat:
uri-encoding: UTF-8
然后就是前端界面直接以记事本的情势打开改编码,但都无济于事。
然后归去从新看了spring mvc,针对前端基于对象添加的相干属性,到了controller层是直接进行匹配的,而我传过来的也不是json格局,所以我直接就把@RequestBody给删掉落,我丢,给网膳绫钦底绕晕了(不怪网上怪本身),想想这么简单的问题(做出来才简单)搞了这么久,浪费这么长时光,还浪费这么长时光记录这么简单的问题,没缺点。
下次碰着问题,第一个想着本身先解试一下,不要一味的依附网上的解答,有时刻也可能事倍功半,就像我浪费的时光!