我的页面包含表中值的就地编辑器。像这样的东西:
<h:dataTable var="actor" value="#{bean.actors}">
<h:column>
<h:input value="#{actor.name}"/>
<h:column>
</h:dataTable>
我希望列表bean中的所有actor在用户单击“保存”按钮时都经过验证。所以我在豆子里放了以下注释
@BeanValidation(useGroups = Default.class, modelValidation = @ModelValidation(isActive = true))
private List<Actor> actors;
我的演员对象中有
@NotNull
private String name;
@AssertTrue
public boolean isValid()
因此,NotNull批注将针对所有参与者进行验证,但不会验证AssewtTrue。
经过长时间的调试会话,一切看起来都清晰明了;-)
对于每个绑定(例如#{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为什么不起作用。但是我没有时间去检查
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句