【问题标题】:Spring webflow partial validationSpring webflow部分验证
【发布时间】:2014-07-08 17:00:15
【问题描述】:

我正在尝试在 Spring Webflow 2.4 中实现部分验证。根据他们的参考手册,验证应该非常简单地使用组:

@NotNull
@Size(min = 2, max = 30, groups = State1.class)
private String name;

据我了解,State1 应该是应在其中验证模型的视图状态的 ID。所以在 flow.xml 中这个视图状态的定义应该是这样的:

<view-state id="state1" model="modelObject"/>

我试图将 State1 定义为模型对象的内部类,但没有成功。

Webflow 参考没有提供部分验证的完整手册,所以我的问题是:我错过了什么吗?有人有使用 JSR303 组使用部分验证的经验吗?

谢谢,西蒙

【问题讨论】:

    标签: validation spring-mvc bean-validation spring-webflow-2


    【解决方案1】:

    我想我现在可以回答我自己的问题了 :)

    问题的根源在于两件事:

    1. Group1 应该是模型对象的内部接口。所以模型对象类应该是这样的:

      public clas ModelObject{
      
        @NotEmpty(groups=Group1.class)
        private String field1;
      
        public interface Group1{}
      }
      
    2. 名称 od validation-hint 应该用单引号引起来

      validation-hints="'group1'"
      

    【讨论】:

      【解决方案2】:

      “在我的理解中,State1 应该是应在其中验证模型的视图状态的 ID。”

      这里的组不是指视图状态ID。它是模型对象实现的内部类或父级或接口。

      要实现 JSR-303 部分验证,在 SWF 2.4 以后(这是 SWF 开始支持它的版本),您需要将验证提示指定为:

          <view-state id="someView" model="modelObject" validation-hints="group1,group2">
      

      其中group1、group2可以是模型类型modelObject或其父类型或modelObject实现的接口中的内部类。

      根据文档here

      Each hint can be an inner Class either in the model type or its parent types. 
      For example, given org.example.MyModel with inner type Group1 and Group2 you 
      can specify the hints "group1", "group2" or both "group1,group2". A hint can 
      also be a fully qualified class name. The hint "default" indicates the default
      validation group, i.e. javax.validation.groups.Default. Also, the validation-hints 
      property can be an expression that resolves to a String or an Object[] containing    
      Class based hints.
      

      【讨论】:

      • 感谢您的回复。我想我已经根据文档使用了验证提示。我定义了视图状态 - &lt;view-state id="firstState" model="modelObject" validation-hints="group1"/&gt; 并在我的模型对象 (public class Group1{}) 中创建了内部类。然后我将组属性添加到我的注释中(@NotEmpty(groups = Group1.class)。但我不断收到异常:org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 0): Field or property 'group1' cannot be found on object of type 'org.springframework.webflow.engine.impl.RequestControlContextImpl'
      猜你喜欢
      • 2017-01-18
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多