我試圖從數據表中選擇時編輯實體對象的表單。所以當用戶點擊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。我可以根據返回的約束違規創建面信息或實際保存人員。 –