gpt4 book ai didi

spring - @ModelAttribute 总是将 Boolean 映射为 false

转载 作者:行者123 更新时间:2023-12-05 06:30:23 28 4
gpt4 key购买 nike

当我尝试将 bool 值从 url 映射到 spring Controller 时,它总是映射到 false。

这是我的网址

http://localhost:8080/myurl?isFirstTime=true

这是我的 Controller

 @RequestMapping(value = "/myurl", method = RequestMethod.GET)
public ResponseEntity<?> getMyUrl(@Valid @ModelAttribute MyObject ap,BindingResult bindingResult ) {

//here isFirstTime is always set to false

}

MyObj 是 POJO 并且具有其他几个完美映射的属性

public class Myobj{

private boolean isFirstTime
//there are other members as well
//getter setter

我试过放置 @JsonProperty 但这也没有用

@JsonProperty
private boolean isFirstTime

知道我在这里做错了什么吗?

最佳答案

使用@ModelAttribute,对象将被初始化:

  • 如果已通过模型添加,则来自模型。
  • 通过@SessionAttributes 来自 HTTP session 。
  • 来自通过转换器传递的 URI 路径变量。
  • 来自默认构造函数的调用。
  • 从参数与 Servlet 请求参数匹配的“主构造函数”调用;参数名称通过 JavaBeans 确定

在您的情况下,它可能与最后一条语句有关。

您可以尝试两种方法来解决它:- 在 Myobj.java 中为构造函数提供 bool 参数- 添加更多方法来首先初始化@ModelAttribute Myobj

@ModelAttribute
public Myobj initObj(@RequestMapping boolean isFirstTime){
Myobj obj = new MyObj();
obj.setIsFirstTime(isFirstTime);
return obj;
}

关于spring - @ModelAttribute 总是将 Boolean 映射为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52409796/

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