2013-06-19 138 views
2

當我選擇一個RadioButton時,我想在頁面的一部分上執行Ajax/Zone更新。Tapestry單選按鈕事件?

<t:RadioGroup t:id="vehicleAvailableGroup" value="vehicle.isAvailable"> 
    <t:label for="vehicleAvailable" /> 
    <t:radio t:id="vehicleAvailable" value="literal:true" label="literal:Yes" /> 
    <t:label for="vehicleNotAvailable" /> 
    <t:radio t:id="vehicleNotAvailable" value="literal:false" label="literal:No" /> 
</t:RadioGroup> 

什麼是處理創建事件或處理我可能忽略的現有事件的最佳方法?

我用盡添加的onclick至極沒有工作,也沒有這樣的:

@OnEvent(value = EventConstants.VALUE_CHANGED, component = "vehicleAvailableGroup") 

編輯:Speling

回答

2

看看傑夫·卡倫德在的JumpStart herezoneUpdater混入。 mixin在字段上偵聽客戶端事件,並使用當前字段值觸發serverside事件。

IMO應該是tapestry-core的一部分,因爲這是一個常見的要求。

+0

Awesome-感謝。這很有用。 – Airomega

0

我寫了一個observe mixin,其靈感來自jumpstart的zoneUpdater mixin。我覺得它比zoneUpdater更方便用戶,而且功能更豐富。

  • 您可以將客戶端字段的可配置列表傳遞給serverside事件。
  • 有一個可選的context屬性,可以在serverside事件中傳遞,在渲染loop中的字段時很有用。
  • 由於字段值在服務器端事件上下文中傳遞,因此不需要混淆請求參數。
  • 您可以聆聽任何客戶端元素,而不只是一個字段。所以你可以聽一個元素的點擊併發送另一個字段的值。

演示here