当字段为空时,Spring MVC 400 Bad Request

时间:2015-09-22 16:34:32

标签: spring-mvc

如果表单字段为空,我在执行AJAX帖子时收到400 Bad请求。但是,当我键入字段的任何值时,我提交服务器能够处理它的请求。

我为这两种情况附加了屏幕截图(成功和失败)

enter image description here enter image description here

这是正常的吗?

控制器

@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;
    }

1 个答案:

答案 0 :(得分:1)

如果您删除@NotBlank,可能会有效。也许在这种情况下你必须检查方法中是否空白。您的方法需要有效的SetSponsorBO。如果您没有,则您的请求无效。不好的要求。