【问题标题】:Spring validation @AssertTrue春季验证@AssertTrue
【发布时间】:2010-05-18 00:08:24
【问题描述】:

如何在视图上显示由于@AssertTrue 注释而出现的 jsp 验证错误消息?它与特定字段无关,但我使用它来验证字段组合。如果我使用<form:errors path="*"/> 会显示该表单的所有错误?

【问题讨论】:

    标签: spring spring-mvc spring-annotations


    【解决方案1】:

    从我的测试来看,如何你命名你的测试函数很重要。你应该正确命名它。

    您不需要字段、getter 或 setter,但您的函数必须以 'is*' 语句开头。

    fe.

    @AssertTrue
    public boolean isConditionTrue() {
       ...
       ...
    
    
    }
    

    @AssertTrue
    public boolean isSomethingElseOk() {
       ...
       ...
    }
    

    不过,如果您需要使用带路径的错误表单,则需要一个字段和 getter/setter,例如:

    <form:errors path="someFieldToDisplay" />
    

    但我认为这很明显。


    一些我没有涉及但可能有帮助的架构问题:

    这也可能会有所帮助: lack of error messages.

    但是如果你使用没有版本标签的架构,它默认使用最新版本。

    【讨论】:

    • 将方法从 valid() 重命名为 isValid() 使用 Spring 使用 Hibernate Validation 为我修复了它。
    • 重命名为*对我来说也是固定的。感谢你的回答。这应该被接受为正确答案。
    • 这确实应该是公认的答案。我不知道必要的命名约定
    • 这太疯狂了。谢谢。
    【解决方案2】:

    声明一个布尔属性似乎对此有用。所以如果有:

    @AssertTrue
    public boolean isConditionTrue() {
       ...
       ...
    }
    

    然后声明如下属性:

    private boolean conditionTrue;
    

    有效。

    【讨论】:

      【解决方案3】:

      你应该这样命名你的属性:

      @AssertTrue(message = "....")
      private boolean conditionTrue; //***NOT isConditionTrue***
      
      public boolean isConditionTrue() {
          return conditionTrue;
      }
      
      public void setConditionTrue(boolean conditionTrue) {
          this.conditionTrue= conditionTrue;
      }
      
      <form:errors path="*"/> or
      <form:errors path="conditionTrue"/>
      

      【讨论】:

      • 消息什么时候显示?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 2017-01-27
      • 2010-12-15
      • 1970-01-01
      相关资源
      最近更新 更多