我正在使用Java 8后端开发React应用程序。我正在尝试将过滤后的表格导出到CSV文件。我已经能够成功导出仅由字符串数组或单值字符串过滤的表。我在合并为布尔值的过滤器时遇到麻烦,但仅当这些过滤器为空时才可以。如果用户不需要按布尔值列过滤表,则该过滤器字段的值等于undefined。值undefined不能通过Web服务请求传递。为了解决这个问题,我设置了一个三元运算符,如下所示:
except
但是,我收到空错误
Boolean === undefined ? null : BooleanValue
通过对java.lang.string的引用,我猜测null将作为字符串值传递,但是,当我尝试在webservice控制器中解决此问题时,它会失败,然后才能看到并调试该值。
注意:我使用的是Boolean类,而不是基本类型boolean(小写)。我的理解是,布尔类应该能够具有null值,但在这里似乎并非如此。有办法吗?
反应(获取要过滤的值,如果未设置过滤器,则将undefined更改为null):
Failed to bind request element: org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Boolean'; nested exception is java.lang.IllegalArgumentException: Invalid boolean value [null]
webservice控制器(如果value = null则调试器不会走得太远,但如果value = true或false时调试器就不会这样做):
webservice.Loans.dashboard.filteredCSV(
LoanTable.status,
LoanTable.engineerEmail,
LoanTable.issues === undefined ? null : LoanTable.issues).then(/*Do Stuff*/)
有没有办法解决这个问题?
答案 0 :(得分:2)
将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);
}