【问题标题】:Spring MVC 400 Bad Request when fields are empty字段为空时的 Spring MVC 400 错误请求
【发布时间】:2015-09-22 16:34:31
【问题描述】:

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

我附上了两种情况的截图(成功和失败)

这正常吗?

控制者

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

【问题讨论】:

  • 这取决于您如何将数据放入服务器。如果有这样的事情:data: { sponsorUsername:'', securityPassword:'' } ,不会有问题......但是,我认为它正在发生的事情:data: { sponsorUsername: securityPassword: },或者类似的东西......这样,sponsorUsername 将具有价值securityPassword,但是securityPassword 变量将不存在...
  • 看到控制器,可能是@Valid注解...SetSponsorBO对这些参数有哪些验证?
  • @NotBlank 和 @Length(max=100) 两个字段
  • 如果您删除@NotBlank,它可能会起作用。也许在这种情况下,您必须检查方法内是否为空白。
  • 删除@NotBlank 是对的。但是为什么会这样呢?

标签: spring-mvc


【解决方案1】:

如果您删除@NotBlank,它可能会起作用。也许在这种情况下,您必须检查方法内是否为空白。您的方法需要有效的 SetSponsorBO 。如果您没有,则您的请求无效。错误的请求。

【讨论】:

    猜你喜欢
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 2017-12-20
    • 2016-04-20
    • 1970-01-01
    相关资源
    最近更新 更多