我有一个页面,员工可以填写他们的详细信息并上传图片。我正在向我的春假发送邮件请求,文件和表格数据如下:
var formData=new FormData();
formData.append("data", angular.toJson($scope.employee));
formData.append("file",$scope.file);
$http.post('rest/employee/upload', formData, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
})
.success(function(){
})
.error(function(){
});
下面是我的弹簧控制器:
@RequestMapping(value="/upload", method = RequestMethod.POST)
public @ResponseBody EmployeeBean upload(EmployeeBean employeeBeanJson, MultipartFile file) {
}
当我发送带有图像和formdata的发布请求时,图像正确到达控制器,但是formdata即。 employeeBean包含具有空值的fileds。
当我将控制器更改为:
@RequestMapping(value="/upload", method = RequestMethod.POST)
public @ResponseBody EmployeeBean upload(MultipartFile file, @RequestParam("data") String employeeBeanJson) {
}
这里formdata以字符串json的形式出现,包含所有必需的值。
我已将multiPartResolver添加到spring-context:
<beans:bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<beans:property name="maxUploadSize" value="2097152" />
</beans:bean>
虽然我可以将此字符串json转换为Object但问题是我无法使用@Valid并且我需要再次进行验证。
有没有办法让第一个弹簧控制器工作? 如果我使用Object Mapper手动转换jsonToObject,有没有办法调用@Valid?