2013-07-22 108 views
1

我有一個表格,有一個文本字段ajaxformcomponentupdatingbehavior獲取文本字段的值。我將按鈕添加到表單,與默認提交不同。在單擊TextField旁邊的按鈕後,我想使用Ajaxformcomponentupdatingbehavior從TextField獲取值。檢票口通過點擊按鈕

我的代碼如下所示:

private String string; 
... 
public ..() { 
Form form = new Form("form") { 
      @Override 
      protected void onSubmit() { 
     //some code 
}; 

add(form); 
TextField textField = new TextField("string", new PropertyModel<String>(this,"string")); 
textField.setOutputMarkupId(true); 
form.add(textField); 
Button button = new Button("evalButton"); 
form.add(button); 
button.add(new AjaxFormComponentUpdatingBehavior("onclick") { 
      @Override 
      protected void onUpdate(AjaxRequestTarget target) {    
       System.out.print(textField.getValue()); 
      } 
}); 

的文本字段的值爲空,單擊該按鈕第二次之後,我得到正確的值。如何在點擊一次按鈕後獲得TextField的值?

回答

1

AjaxFormComponentUpdatingBehavior不做相當你的想法。該行爲實際上應用於TextField,而不是按鈕。你的代碼更新按鈕,而不是文本的模型。一個例子見this previous question

我在地址形式的郵政編碼查找按鈕之前做到了這一點。我用一個`IndicatingAjaxButton」推動整個形式,並且我禁用默認表單處理。然後我直接抓住文本輸入,將其通過我的驗證器,將格式化標準化,然後進行處理:

final IndicatingAjaxButton lookup = new IndicatingAjaxButton("lookup", form) { 
    @Override 
    protected void onSubmit(AjaxRequestTarget target, Form<?> form) { 
    String code = postcode.getInput(); 

    code = (new PostcodeValidator()).convertToObject(code, 
        getLocale()); 

    ... Postcode lookup here 


    target.add(ContactDetailsPanel.this); 
    } 

    @Override 
    protected void onError(AjaxRequestTarget target, Form<?> form) { 
    } 
}; 
lookup.setDefaultFormProcessing(false); 
add(lookup); 
+0

太好了,它的工作原理與我需要的一樣,謝謝..;) –