2013-06-12 77 views
3

我正在使用Form組件編輯對象中的值。我已經使用LoadableDetachableModel將對象映射到窗體,以便對象中的值顯示在窗體上並自動應用更新。對象映射表單組件的Wicket字符串驗證器

final Form<Withdrawal> form = new Form<Withdrawal>("form", 
       new CompoundPropertyModel<Withdrawal>(ldm)) { 
.... } 

但是,我添加驗證器來形成組件如StringValidator到文本字段的問題。我有一個「註釋」字段(撤銷對象中的一個字段)。

理想我想將其添加爲:

TextField<Withdrawal> tf_comments = new TextField<Withdrawal>("comment"); 
tf_comments.add(new StringValidator.MaximumLengthValidator(255)); 
form.add(tf_comments); 

但因爲我不能StringValidators添加到它,因爲StringValidatorTextField<Withdrawal>沒有定義。所以我正在使用下面的內容並獲取該字段的值並將其設置爲手動對象。

TextField<String> tf_comments = new TextField<String>("comment"); 
    tf_comments.add(new StringValidator.MaximumLengthValidator(255)); 
    form.add(tf_comments); 

有沒有辦法直接上添加驗證TextField<Withdrawal>

謝謝。

回答

1

首先,您對TextField<Withdrawal>CompoundPropertyModel的理解錯誤:CompoundPropertyModel負責將由名稱指定的屬性通過PropertyModel綁定到TextField。 因此,您不需要TextField的通用StringValidator對象。

在Wicket 6.7: TextField<Withdrawal> tf_comments = new TextField<Withdrawal>("comment"); tf_comments.add(StringValidator.maximumLength(255));

檢票1.5您的代碼應工作,至少我沒有得到任何語法錯誤。 您應該在提款類中爲「評論」設置吸氣劑和填充劑。

+0

我正在使用Wicket 1.4。我收到以下錯誤 **發現添加沒有合適的方法(StringValidator) 方法FormComponent.add(IValidator )不適用 (實際參數StringValidator無法通過方法調用轉換而轉換成IValidator )** – Jay

+0

能不要說你的設置出了什麼問題:我只是用wicket 1.5快速地在jetty上測試了這個例子,它正在工作。你能否粘貼更多的代碼(e.x.提款類)pastebin? – mrak

+1

您在標籤中指定了Wicket 1.5,所以我測試了此版本。 Wicket 1.4僅使用TextField tf_comments = new TextField (「comment」)。這應該做的伎倆。 順便說一句:是否有一個特別的原因,你正在使用過時的檢票口版本? – mrak