Java类布尔值不接受null
我正在使用Java8后端开发react应用程序。我正在尝试将筛选后的表导出到CSV文件。我已经能够成功导出一个仅由字符串数组或单值字符串过滤的表。我在合并布尔型过滤器时遇到了问题,但只有当这些过滤器为空时。如果用户不需要按布尔列筛选表,则该筛选字段的值等于未定义。未定义的值不能通过web服务请求传递。为了解决这个问题,我有一个三元运算符集,如下所示:Java类布尔值不接受null,java,reactjs,null,boolean,Java,Reactjs,Null,Boolean,我正在使用Java8后端开发react应用程序。我正在尝试将筛选后的表导出到CSV文件。我已经能够成功导出一个仅由字符串数组或单值字符串过滤的表。我在合并布尔型过滤器时遇到了问题,但只有当这些过滤器为空时。如果用户不需要按布尔列筛选表,则该筛选字段的值等于未定义。未定义的值不能通过web服务请求传递。为了解决这个问题,我有一个三元运算符集,如下所示: Boolean===未定义?空:布尔值 但是,我收到空错误 绑定请求元素失败:org.springframework.web.method.ann
Boolean===未定义?空:布尔值
但是,我收到空错误
绑定请求元素失败:org.springframework.web.method.annotation.MethodArgumentTypeMismatchException:未能将类型“java.lang.String”的值转换为所需类型“java.lang.Boolean”;嵌套异常为java.lang.IllegalArgumentException:无效的布尔值[null]
通过对java.lang.string的引用,我猜测null是作为字符串值传递的,但是,当我尝试在我的webservice控制器中解释这一点时,在我可以查看和调试该值之前它失败了
注意:我使用的是Boolean类,而不是基本类型Boolean(小写)。我的理解是Boolean类的值应该为null,但这里的情况似乎不是这样。有办法做到这一点吗
反应(获取要筛选的值,如果未设置筛选,则将undefined更改为null):
webservice控制器(如果value=null,调试器不会走到这一步,但是如果value=true或false,调试器会走到这一步):
@RequestMapping(value=“/filteredCSV.json”)
@应答器
公共Web服务响应过滤器EDCSV(
@RequestParam(value=“status”)ArrayList状态,
@RequestParam(value=“engineerEmail”)ArrayList engineerEmail,
@RequestParam(value=“issues”)布尔问题{
if(issues.equals(“null”)){
问题=新布尔值(空);
}
返回服务.filteredCSV(状态、工程师电子邮件、问题);
}
是否有办法处理此问题?将
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);
}
@RequestMapping(value=“/filteredCSV.json”)
@应答器
公共Web服务响应过滤器EDCSV(
@RequestParam(value=“status”)ArrayList状态,
@RequestParam(value=“engineerEmail”)ArrayList engineerEmail,
@RequestParam(value=“issues”,required=false)布尔值问题){
返回服务.filteredCSV(状态、工程师电子邮件、问题);
}
将required
设置为false,则问题
参数将为空
@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);
}
@RequestMapping(value=“/filteredCSV.json”)
@应答器
公共Web服务响应过滤器EDCSV(
@RequestParam(value=“status”)ArrayList状态,
@RequestParam(value=“engineerEmail”)ArrayList engineerEmail,
@RequestParam(value=“issues”,required=false)布尔值问题){
返回服务.filteredCSV(状态、工程师电子邮件、问题);
}
谢谢您的回复。但是,这似乎对我不起作用。我仍然收到相同的错误,org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver HandletTypeMismatch)-绑定请求元素失败:org.springframework.web.method.annotation.MethodArgumentTypeMismatch异常:转换类型的值失败“java.lang.String”转换为所需类型“java.lang.Boolean”;嵌套异常为java.lang.IllegalArgumentException:无效的布尔值[null]
是否设置了issues request参数?是的,我编辑了OP以显示issues值的设置位置。此外,我可以在Chrome Network Requests中看到web请求被发送,undefined值被设置为null。不确定这是否重要。该请求然后被定向到web服务控制器。正如我前面提到的,如果我t发布为true或false筛选器工作,我可以导出,但如果该筛选器未被使用,则其初始值未定义。如果未定义,我将其值设为null。实际物理请求是否包含发布
参数?是的,据我所知。它从web请求中的值中设置:感谢您的回复。H不过,这似乎对我不起作用。我仍然会遇到相同的错误,org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver HandletTypeMismatch)-绑定请求元素失败:org.springframework.web.method.annotation.MethodArgumentTypeMismatch异常:未能将“java.lang.String”类型的值转换为所需的值pe'java.lang.Boolean';嵌套异常为java.lang.IllegalArgumentException:无效的布尔值[null]
是否设置了issues request参数?是的,我编辑了OP以显示issues值的设置位置。此外,我可以在Chrome Network Requests中看到web请求被发送,undefined值被设置为null。不确定这是否重要。该请求然后被定向到web服务控制器。正如我前面提到的,如果我t发出true或false该筛选器工作,我可以导出,但如果该筛选器未被使用,则其初始值未定义。如果其未定义,我将其值设为null。实际物理请求是否包含发出
参数?是的,据我所知。其设置形式为web请求中的值:
@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);
}