我试图从数据表中选择时编辑实体对象的表单。所以当用户点击datatable中的commandButton时,myBean.person
属性被填充适当的人物对象。人有“地位”财产。JSF 2.0 + Bean验证+更多验证组合在一个表格中
我想根据“状态”属性的值验证具有不同验证组的编辑表单。这可能吗?
我创建了两个不同的验证组:
@Entity
public class Person{
private String status;
...
@NotNull(message = "{person.null.name}", groups = PersonNew.class)
private String name;
@NotNull(message = "{person.null.code}", groups = PersonActive.class)
private String code;
}
我想保存,当状态为“新建”,然后name
属性应该设置之前验证形式。当状态为“激活”时,应该设置code
属性。
我有JSF页面:
<h:form id="personEdit">
<h:inputText value="#{myBean.person.name}" />
<h:inputText value="#{myBean.person.code}" />
... other fields for other properties ...
<h:commandButton value="Save" action="#{myBean.save}" />
</h:form>
我试图用<f:validateBean />
标签与dynamicaly集validationGroups属性,但被检索实际的人对象之前被称为是返回validationGroups方法。所以我不能根据Person.status
属性来决定。
因此,如果人的状态为“新”,那么可以将PersonNew
定义为验证组,否则将PersonActive
定义为验证组?
感谢您的任何帮助。
我对这个问题的解决方案是手动验证bean。在“save”方法中,我可以决定使用哪个验证组,并创建Validator来验证给定的bean。我可以根据返回的约束违规创建面信息或实际保存人员。 –