gpt4 book ai didi

java - Spring 将 @PathVariable 绑定(bind)到 JavaBean

转载 作者:行者123 更新时间:2023-12-05 07:10:53 24 4
gpt4 key购买 nike

我尝试在 Spring Controller 中绑定(bind)一个对象,以便它可以用作 @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? .但两者都不起作用。

我在我的 Controller 中创建了类似的东西。

@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,它不会为 null,就像这样 GET localhost:8080/buildings/{buildingId}/floors/{floorId}/rooms/{roomId}/sections?buildingId=a&floorId=b&roomId=c

如何修复它,使其表现得像 @PathVariable 而不是表现得像 @RequestParam

最佳答案

你可以使用@ModelAttribute获取它

试试这个:

@GetMapping("/{buildingId}/floors/{floorId}/rooms/{roomId}/sections")
public Flux<SectionDTO> getRoomSections(@ModelAttribute BuildingRequestBean request) {
return this.buildingService.getRoomSections(request);
}

关于java - Spring 将 @PathVariable 绑定(bind)到 JavaBean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61060589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com