问题描述:
在使用SpringBoot开发Web应用时,如果前端发送POST请求到后端,且未传递需要的参数,则会出现"Required String parameter xxx is not present"错误。此错误提示表示需要的字符串类型参数未传递。
解决方案:
1.使用@RequestParam注解标记接收参数的变量,设置required参数为false,即可让SpringBoot接收空值。
@PostMapping("/test")
public String test(@RequestParam(value = "param", required = false) String param) {
System.out.println(param);
return "test";
}
2.使用@RequestBody注解在接收对象时转换为实体类对象,能更方便的接收前端传递的数据。
@PostMapping("/test")
public String test(@RequestBody User user) {
System.out.println(user.getName());
return "test";
}
示例说明:
1.使用@RequestParam注解解决问题
前端代码:
<script>
function postText() {
var param = $("#test").val();
$.ajax({
type: 'POST',
url: '/test',
data: {
param: param
}
})
}
</script>
<textarea id="test"></textarea>
<button onclick="postText()">提交</button>
在此示例中,我们向后端发送POST请求,并将前端传递的参数param发送到后端的test接口。如果没有填写内容并提交,后端就会抛出"Required String parameter param is not present"错误。我们在后端的test接口上使用@RequestParam注解标记参数param,并将required参数设置为false,即可解决此错误。另外,在test接口中将参数param打印到控制台,为了方便查看。
2.使用@RequestBody注解解决问题
前端代码:
<script>
function postJson() {
var data = {
name: $("#name").val(),
age: $("#age").val()
};
$.ajax({
type: 'POST',
url: '/test',
contentType: "application/json",
data: JSON.stringify(data)
})
}
</script>
<input type="text" id="name">
<input type="text" id="age">
<button onclick="postJson()">提交</button>
在此示例中,我们使用了POST请求,并且提交的数据是一个json对象{name, age}。在后端的test接口上,我们使用@RequestBody注解将JSON转换成实体类User对象。请求参数的格式为application/json。最后,我们将实体类User对象中的name打印到控制台,为了方便查看。
public class User {
private String name;
private int age;
// getter和setter省略
}
@PostMapping("/test")
public String test(@RequestBody User user) {
System.out.println(user.getName());
return "test";
}
以上就是关于SpringBoot解决"Required String parameter xxx is not present"问题的攻略。感谢阅读!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot解决Required String parameter xxx is not present问题 - Python技术站