gpt4 book ai didi

Java 类 Boolean 不接受 null

转载 作者:行者123 更新时间:2023-12-02 01:43:33 25 4
gpt4 key购买 nike

我正在开发一个带有 Java 8 后端的 React 应用程序。我正在尝试将筛选后的表导出到 CSV 文件。我已经能够成功导出仅由字符串数组或单值字符串过滤的表。我在合并 boolean 值过滤器时遇到问题,但仅限于这些过滤器保留为空时。如果用户不需要通过 boolean 列过滤表,则该过滤字段的值等于未定义。未定义的值无法通过 Web 服务请求传递。为了解决这个问题,我设置了一个三元运算符,如下所示:

boolean 值 === 未定义? null : boolean 值

但是,我收到空错误

无法绑定(bind)请求元素:org.springframework.web.method.annotation.MethodArgumentTypeMismatchException:无法将类型“java.lang.String”的值转换为所需类型“java.lang.Boolean”;嵌套异常是 java.lang.IllegalArgumentException: 无效的 boolean 值 [null]

通过对 java.lang.string 的引用,我猜测 null 正在作为字符串值传递,但是,当我尝试在 Web 服务 Controller 中考虑这一点时,在我可以查看和调试该值之前它会失败。

注意:我使用的是 Boolean 类,而不是原始类型 boolean(小写)。我的理解是 Boolean 类应该能够具有 null 值,但这里的情况似乎并非如此。有办法做到这一点吗?

React(获取正在过滤的值,如果未设置过滤器,则将 undefined 更改为 null):

  webservice.Loans.dashboard.filteredCSV(
LoanTable.status,
LoanTable.engineerEmail,
LoanTable.issues === undefined ? null : LoanTable.issues).then(/*Do Stuff*/)

Web 服务 Controller (如果 value = null,则调试器不会走到这一步,但如果 value = true 或 false,则调试器不会走到这一步):

@RequestMapping(value = "/filteredCSV.json")
@ResponseBody
public WebserviceResponse<?>filteredCSV(
@RequestParam(value="status") ArrayList status,
@RequestParam(value="engineerEmail") ArrayList engineerEmail,
@RequestParam(value="issues") Boolean issues){

if(issues.equals("null")){
issues = new Boolean(null);
}

return service.filteredCSV(status, engineerEmail, issues);
}

有办法解决这个问题吗?

最佳答案

required 设置为 false,那么 issues 参数将为空。

@RequestMapping(value = "/filteredCSV.json")
@ResponseBody
public WebserviceResponse<?>filteredCSV(
@RequestParam(value="status") ArrayList status,
@RequestParam(value="engineerEmail") ArrayList engineerEmail,
@RequestParam(value="issues", required=false) Boolean issues){

return service.filteredCSV(status, engineerEmail, issues);
}

关于Java 类 Boolean 不接受 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54080155/

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