SpringBoot@RequestBody无法获取页面传递的参数,属性名命名规范问题

在SpringBoot项目中,解决controller接收前端uId参数失败的问题,通过使用@JsonProperty注解,调整对象命名规范,避免两个大写字母连续出现导致的set/get方法赋值失败。

最近在springboot项目中,发现controller中定义了User对象,其中有一个属性uId,前台页面怎么传递数值,后台也无法接收到,解决方法如下:

package com.user.bean;
import lombok.Data;

@Data
public class BoilerBean {
    private String userName;

    @JsonProperty(value = "uId") 
    private String uId;
}

由于生成的set/get方法中,对象名为setUId和getUId,两个大写字母靠在一起了,所以无法赋值。用@JsonProperty即可解决问题。其实还是命名规范的问题,建议用id或者userId,就是不要2个字母都大写的挨到一起。

### 如何在 Spring Boot 中通过注解传递参数 在 Spring Boot 中,可以通过多种注解实现控制器方法的参数绑定。对于 HTTP 请求中的不同部分(路径变量、请求体、查询参数等),有不同的注解来处理。 #### 路径变量 (@PathVariable) 当 URL 模板中包含占位符时,可以使用 `@PathVariable` 来获取这些占位符对应的值: ```java @GetMapping("/greeting/{name}") public String greeting(@PathVariable String name) { return "Hello, " + name; } ``` 此代码片段展示了如何接收来自 URL 的名称并返回问候消息[^2]。 #### 查询参数 (@RequestParam) 为了读取 GET 请求后面的查询字符串参数,应该采用 `@RequestParam` 注解: ```java @GetMapping("/search") public String searchUsers(@RequestParam(value="query", required=false, defaultValue="World") String query) { return "Query: " + query; } ``` 这里定义了一个可选的查询参数,默认情况下如果没有提供则设置为 “World”。这有助于防止因缺少必要参数而导致错误的发生[^5]。 #### 表单数据 (@ModelAttribute 和 @RequestBody) 针对 POST 请求提交的数据,有两种主要的方式取决于客户端发送的内容类型: - 如果是表单编码形式,则利用 `@ModelAttribute` 或者直接指定参数名; ```java @PostMapping("/form") public String handleFormSubmission(User user) { // User 是一个 POJO 类 return "User submitted!"; } ``` - 对于 JSON/XML 等非表单格式的数据流,需借助 `@RequestBody` 将其映射成 Java 对象。 ```java @PostMapping("/json") public ResponseEntity<User> createUser(@Valid @RequestBody User user){ userRepository.save(user); return new ResponseEntity<>(user, HttpStatus.CREATED); } ``` 上述例子说明了如何解析不同类型的身体负载,并将其转换为目标对象实例以便进一步操作[^3]。 #### SQL 参数 (@Param) MyBatis 映射器接口内的方法签名里也可以见到 `@Param` 这样的注释,用来给命名参数赋值,在执行数据库查询的时候非常有用: ```java public interface UserRepository extends BaseMapper<User> { /** * 根据用户名查找用户记录. */ List<User> selectByUsername(@Param("username") String username); } ``` 注意:当不适用 `@Param` 注解而尝试访问 `${}` 形式的属性将会引发异常;相反地,`#{}` 总是可以安全使用的。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值