當我進入我的表的編輯模式,我想要在該表的所有字段上進行數據驗證。Vaadin Bean驗證表
首先,有兩點要注意:
- 我使用Vaadin 7,所以Bean驗證插件黯然將無法正常工作。
- 我知道JSR-303的工作原理,因爲我嘗試向TextField添加一個BeanValidator而沒有問題。
現在,我有一個完美的工作表,我正在使用BeanItemContainer來保留我的Person Bean。
在Person bean看起來如下:
public class Person {
@Size(min = 5, max = 50)
private String firstName;
@Size(min = 5, max = 50)
private String lastName;
@Min(0)
@Max(2000)
private int description;
... getters + setters...
}
人豆被添加到BeanItemContainer,其又被設定爲容器數據源與setContainerDataSource()
的BeanValidator加入到表像這樣:
table.addValidator(new BeanValidator(Person.class, "firstName"));
當我運行應用程序,我有兩個問題:
當我運行該應用程序時,表格按預期顯示。但是,當我編輯字段並將其中一個firstName字段設置爲「abc」時 - 沒有顯示驗證錯誤並且該值被接受 我該如何讓BeanValidator在我的所有表格字段上工作?
當我使用table.setSelectable(真)或table.setMultiSelect(真),我得到這個錯誤:
com.vaadin.server.ServiceException: java.lang.IllegalArgumentException: [] is not a valid value for property firstName of type class com.some.path.vaadinpoc.sampleapp.web.Person How am I supposed to get BeanValidator to work with Selectable/MultiSelect?
請指點
謝謝!
這將是有用的看到:a)'Person.firstName'字段的聲明,b)該字段的問題值 –
Person類現在被添加到我原來的問題。 此外,我找到了一個問題(例外)的原因,但它仍然無法正常工作。我相應地更新了我的原始問題。 – Roger