1
我有一些POJO與JSR 303的驗證這樣一個:GXT驗證反饋
@NotNull
@Size(max = 80)
@Column(name = "trs_name")
private String name;
在應用程序中,我有一個GXT文本字段包裹在GXT FieldLabel聯合,一個GWT編輯器中呈現它。如果驗證失敗,則FieldLabel聯合自動顯示一個紅色波和紅旗:
而這正是我需要的。
但是對於更復雜的驗證像這樣的:
@Size(min = 1)
private Set<EnumRole> roles;
我創建了一個自定義的Editor<Set<Enum>>
:
public class EnumSetEditor<T extends Enum<T>> extends Composite implements LeafValueEditor<Set<T>> {
private Map<T, CheckBox> map;
public EnumSetEditor(Class<T> clazz) {
FlowPanel panel = new FlowPanel();
this.map = new HashMap<T, CheckBox>();
for(T t : clazz.getEnumConstants()) {
CheckBox cb = new CheckBox();
cb.setBoxLabel(I18nEnum.i18nEnum(t)); //translates the enum
panel.add(cb);
map.put(t, cb);
}
this.initWidget(panel);
}
@Override
public void setValue(Set<T> value) {
for(Map.Entry<T, CheckBox> entry : map.entrySet()) {
entry.getValue().setValue(value.contains(entry.getKey()));
}
}
@Override
public Set<T> getValue() {
Set<T> result = new HashSet<T>();
for(Map.Entry<T, CheckBox> entry : map.entrySet()) {
if(entry.getValue().getValue()) {
result.add(entry.getKey());
}
}
return result;
}
}
據rendred這樣的:
的問題在於,甚至包裹在GXT FieldLabel中,如果沒有選項被選中,我沒有任何反饋。因此,驗證失敗並且用戶沒有反饋。
我認爲GXT FieldLabel聯合將自動驗證失敗的情況下添加紅旗在編輯器的右側。
- 難道我做錯了什麼?
- 是否有獲得此反饋的最佳做法?
完全正確 - 標籤不管理錯誤,但該領域本身獲得誤差。相信我這一點,你不想生活在世界(提示:泛型地獄)標籤需要知道如何建立領域... –