2013-06-19 89 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