Java SpringMVC:long类型的表单字段的空值导致400个错误请求
我正在尝试提交一个包含以下字段的表单Java SpringMVC:long类型的表单字段的空值导致400个错误请求,java,forms,spring,parsing,spring-mvc,Java,Forms,Spring,Parsing,Spring Mvc,我正在尝试提交一个包含以下字段的表单 private String type; private long minPrice; private long maxPrice; 当long类型的两个字段中的一个为空时,for submission将导致400个错误请求(对于非空字段,可以正常工作) 我得到一个错误: 默认消息[minPrice]];默认消息[转换失败] 类型为“java.lang.String”的属性值为的必需类型“long” 属性“minPrice”;嵌套异常为 java.lang
private String type;
private long minPrice;
private long maxPrice;
当long
类型的两个字段中的一个为空时,for submission将导致400个错误请求(对于非空字段,可以正常工作)
我得到一个错误:
默认消息[minPrice]];默认消息[转换失败]
类型为“java.lang.String”的属性值为的必需类型“long”
属性“minPrice”;嵌套异常为
java.lang.NumberFormatException:对于输入字符串:“”
据我所知,它试图将空字符串解析为键入long
,否则我错了
现在,我应该怎么做才能在long
类型字段的值为null
的情况下提交此表单
(我正在使用Spring 4.0)使用类而不是原语类型long
,您将能够检查null
值,以便处理它们并避免错误的请求错误
@RequestMapping(value="/your_path", method = RequestMethod.GET)
public String myControllerFunction(
@RequestParam("minPrice") Long min,
@RequestParam("minPrice") Long max,
@RequestParam("type") String type) {
// your controller code
}
您应该使用类“Long”而不是类型“Long”,因为基元类型不能有空值。我有一个不同的情况,下面是代码摘录:
@Consumes(MediaType.MULTIPART_FORM_DATA)
@PermitAll
@Path("uploadSiteDocument")
void uploadSiteDocument(@FormDataParam("siteId") Long siteId,
@FormDataParam("fileTypeId") Long fileTypeId,
@FormDataParam("description") String description,
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail,
@FormDataParam("file") FormDataBodyPart body,
@FormDataParam("primaryConnection") Long pcId,
@FormDataParam("internalSolution") Long isId)
throws IOException, RepositoryException;
通过Postman,此服务仅在最后两个参数为空(不是空值而是空的)时工作
只有两种解决方案:
...@FormDataParam("primaryConnection") **String** pcId,
@FormDataParam("internalSolution") **String** isId)