【发布时间】:2020-07-18 11:56:52
【问题描述】:
我尝试在 Spring 控制器中绑定一个对象,以便它可以用作@PathVariable。我想这样做,因为我想传递一些@PathVariable。我已经尝试过Bind Path variables to a custom model object in spring 和Is it possible to bind path variable and request param into a single object? 的解决方案。但两者都不起作用。
我在我的控制器中创建了类似的东西。
@RestController
@RequestMapping("/buildings")
@RequiredArgsConstructor
public class BuildingController {
private final BuildingService buildingService;
@GetMapping("/{buildingId}/floors/{floorId}/rooms/{roomId}/sections")
public Flux<SectionDTO> getRoomSections(BuildingRequestBean request) {
return this.buildingService.getRoomSections(request);
}
}
和BuildingRequestBean.java 这样
@Getter
@Setter
public class BuildingRequestBean {
private String buildingId;
private String floorId;
private String roomId;
}
当我检查BuildingRequestBean 时,当我用GET localhost:8080/buildings/a/floors/b/rooms/c/sections 调用它时,属性为空。
但是,如果我将其称为@RequestParam,它不会为空,类似于GET localhost:8080/buildings/{buildingId}/floors/{floorId}/rooms/{roomId}/sections?buildingId=a&floorId=b&roomId=c
如何修复它,使其表现得像 @PathVariable 而不是像 @RequestParam?
【问题讨论】:
-
我遇到了同样的问题,我正在使用 2.3.2.RELEASE。你解决了这个问题吗?
-
不,我没有找到任何解决方案
-
是的,在当前的春季版本中可能没有办法。我是手动绑定变量,然后通过代码调用验证
标签: java spring-boot spring-mvc