springboot项目前端传递了某个参数,但是后端获取值为null
从浏览器的payload中可以看出前端请求的方式是text还是form提交
1、前端如果提交方式为text,将参数绑定到对象的时候需要用到@Request注解,才能进行绑定,否则获取的值一直为null;
import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/users") public class UserController { @PostMapping("/") public User createUser(@RequestBody User user) { // 处理创建用户的逻辑 return user; } }
2、前端传递的方式为form表单的时候,如下的例子中
客户端向/register
发送POST请求并且请求体是application/x-www-form-urlencoded
类型时,Spring Boot会自动将请求参数绑定到User
对象的相应属性上。
但必须确保你的User
类有公开的setter方法,以便Spring能够使用反射来设置属性值。如果你使用Lombok库,@Getter
和@Setter
注解可以自动为你的属性生成这些方法。
此外,Spring Boot为你自动配置了消息转换器等组件,因此你不需要像在传统的Spring MVC设置中那样进行大量配置。这就是Spring Boot的"约定优于配置"的理念,它提供了合理的默认值,同时仍然允许你根据需要进行自定义配置
import org.springframework.web.bind.annotation.*; // 导入lombok注解简化模型类的编写 import lombok.Getter; import lombok.Setter; // RestController注解告诉Spring Boot这是一个控制器组件,并且返回的字符串是响应体,而不是视图名 @RestController public class UserController { // PostMapping注解表示这个方法将处理POST请求 @PostMapping("/register") public String registerUser(User user) { // user对象将包含表单提交的数据 // 这里可以执行如保存用户等操作 return "User " + user.getUsername() + " registered successfully!"; } } // 使用lombok简化getter和setter的编写 @Getter @Setter class User { private String username; private String password; // 可以添加其他属性以及它们的getter和setter }
唯有热爱方能抵御岁月漫长。