如果表单字段为空,我在执行AJAX帖子时收到400 Bad请求。但是,当我键入字段的任何值时,我提交服务器能够处理它的请求。
我为这两种情况附加了屏幕截图(成功和失败)
这是正常的吗?
控制器
@RequestMapping(value = "/ajax/setsponsor", method = RequestMethod.POST)
@ResponseBody
public ValidationResponse updateSponsorTab(@Valid SetSponsorBO setSponsorBO, Locale locale,BindingResult result) {
ValidationResponse res = new ValidationResponse();
List<ErrorMessage> errorMesages = new ArrayList<ErrorMessage>();
if (!result.hasErrors()) {
res.setStatus(messageSource.getMessage("success.message", null, locale));
try{
res.setValue(myAccountService.updateSponsor(setSponsorBO));
if(!res.getValue().equalsIgnoreCase(messageSource.getMessage("success.message", null, locale))){
res.setStatus("FAIL");
}
}catch(Exception ex){
System.out.println("Error AccountController set sponsor : " + ex.getMessage());
res.setValue(messageSource.getMessage("failed.message", null, locale));
res.setStatus("FAIL");
}
} else {
res.setStatus("FAIL");
List<FieldError> allErrors = result.getFieldErrors();
for (FieldError objectError : allErrors) {
errorMesages.add(new ErrorMessage(objectError.getField(),
objectError.getDefaultMessage()));
}
res.setValue(messageSource.getMessage("failed.message", null, locale));
}
res.setErrorMessageList(errorMesages);
return res;
}
答案 0 :(得分:1)
如果您删除@NotBlank
,可能会有效。也许在这种情况下你必须检查方法中是否空白。您的方法需要有效的SetSponsorBO
。如果您没有,则您的请求无效。不好的要求。