2011-09-07 59 views
2

我正在使用Wicket應用程序,並且已經爲DropDownChoice定義了onchange事件處理程序,我想手動調用處理程序。有誰知道一種方法來做到這一點?手動調用組件的檢票事件處理程序

代碼示例:

DropDownChoice<String> choices = new DropDownChoice<String>(
    "choices", 
    new Model<String>(), 
    Arrays.asList("First", "Second", "Third"); 

choices.add(new AjaxFormComponentUpdatingBehavior("onchange") { 
    @Override 
    protected void onUpdate(AjaxRequestTarget target) { 
    // do stuff 
    } 
}); 

我知道我可以做拉的onUpdate內容伸到它自己的方法,只是調用該方法,但我很好奇,想知道是否有一種方法事件處理程序直。我知道WicketTester可以模擬被點擊或改變的組件。也許這樣做的方式會起作用?

乾杯,

上限

+0

什麼是用例?應該使用AjaxFormComponentUpdatingBehavior來更新組件的模型並進行一些Ajax更新。您可以使用dropDown.setModelObject(「Second」)更新模型,但我沒有看到沒有理由嘗試在非Ajax請求中使用AjaxRequestTarget。 –

+0

基本上只有幾個不同的調用來更新其他組件,這些組件會根據此組件中已更改的內容更改數據。我想在創建佈局時預先選擇DropDownChoice的第一個選項,然後讓每個依賴於它的組件更新。 – Caps

回答

2

在檢票1.5存在用於這樣的用例使用eventbus。在之前的版本中,你必須模擬這個。還有其他與此有關的問題。 (見here

0

從JavaScript或jQuery的調用它,你可以調用

htmlElement.trigger("change"); 

它在檢票1.6調用AjaxFormComponentUpdatingBehavior( 「平變化」)。