【问题标题】:model validation of table using extval使用 extval 对表进行模型验证
【发布时间】:2014-04-22 13:12:35
【问题描述】:

我的页面包含表中值的就地编辑器。像这样的:

<h:dataTable var="actor" value="#{bean.actors}">
  <h:column>
   <h:input value="#{actor.name}"/>
  <h:column>
</h:dataTable>

我希望在用户单击保存按钮时验证列表 bean.actors 中的所有参与者。所以我在我的 bean 中添加了以下注释

@BeanValidation(useGroups = Default.class, modelValidation = @ModelValidation(isActive = true))
private List<Actor> actors;

在我的演员对象中

@NotNull
private String name;

@AssertTrue
public boolean isValid()

所以 NotNull 注释对所有参与者都进行了验证,但 AssewtTrue 没有进行验证。

【问题讨论】:

    标签: validation jsf nextval


    【解决方案1】:

    经过长时间的调试,一切看起来都清晰明了;-)

    对于每个绑定(例如 #{bean.property1.property2.actors} )extval 分析 1)基础属性(property2) 2) bean 的类

    除了搜索其他东西之外,它还搜索 BeanValidation 注释,如果找到它们,则执行模型验证。因此,要指定属性参与者应该是有效的,我们需要验证它的直接父级。所以正确的配置应该是这样的:

    @BeanValidation(useGroups = Default.class, modelValidation = @ModelValidation(isActive = true,validationTargets={"#{accountController}"}))
    public class ActorController{
    
       @Valid
       public List<Actor> getActors
    
    
    }
    

    另一个奇怪的事情是,如果我放在字段级别,为什么 @Valid 不起作用。但是我没有时间检查这个

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2017-02-20
      相关资源
      最近更新 更多