spring - 如何在 spring mvc 表单中验证多个模型?

标签 spring validation spring-mvc hibernate-validator

我有一个带有多个模型的 spring mvc 表单。 颜色阴影

我正在使用休眠验证器,当我只有一个模型时,验证工作完美。根据我的研究,我发现使用 spring mvc 形式拥有多个模型的最佳方法是创建一个包装这两个模型的新模型。所以我做了:

模型

public class ColorShade {

    private Color color;
    private Shade shade;

    //getter setters
}

public class Color {
  @NotEmpty
  private String name;
  //getter setters
}

public class Shade {
  @NotEmpty
  private String shadeName;
  //getter setters
}

Controller

@RequestMapping(method = RequestMethod.POST)
public String validateForm(
        @ModelAttribute("COLORSHADE") @Valid ColorShade colorShade,
        BindingResult result, Map model) {
    if (result.hasErrors()) {
        return "myForm";
    }

    return "success";
}

查看

<form:form method="post" commandName="COLORSHADE" cssClass="form-horizontal" >
    <spring:bind path="COLORSHADE.color.name">
        <div class="control-group ${status.error ? 'error' : ''}">
            <label class="control-label">Color Name</label>
            <div class="controls">
                <form:input path="${status.expression}"/>
            </div>
        </div>
    </spring:bind>
    <spring:bind path="COLORSHADE.shade.shadeName">
        <div class="control-group ${status.error ? 'error' : ''}">
            <label class="control-label">Shade Name</label>
            <div class="controls">
                <form:input path="${status.expression}"/>
            </div>
        </div>
    </spring:bind>
</form>

问题

  • 上述设置有效,但验证现在不起作用。我怎样才能让验证起作用?
  • 如果我只有单个模型并删除了 ColorShade 模型的环绕,那么验证就可以正常工作。如何让单一表单和验证中的多个模型都能正常工作?

最佳答案

尝试:

public class ColorShade {
    @Valid
    private Color color;
    @Valid
    private Shade shade;

    //getter setters
}

参见http://beanvalidation.org/1.0/spec/#d0e991

关于spring - 如何在 spring mvc 表单中验证多个模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16525024/

相关文章:

Java - Apache POI 整数验证

spring-mvc - 如何正确 Autowiring MockMvc bean

java - 当应用程序启动时,在 spring 中初始化一个方法一次的最佳方法是什么?

javascript - 添加功能在 IE 上运行良好,但在 Mozilla 上运行不正常

javascript - 为什么 JavaScript 传递未经验证的信息

java - 如何与 Maven 一起运行 xml 配置驱动和无 xml Spring Web 应用程序?

spring-mvc - Spring MVC : How to resolve the path to subdirectories of the root 'JSP' folder in a web application

Spring AOP 与 AspectJ 启动性能/内存要求

java - 使用 Google OAuth2 以编程方式登录网站

spring - 异常将上下文初始化事件发送到类 org.springframework.web.context.ContextLoaderListener 的监听器实例