0

我想使用 Apache Wicket 将 AttributeAppender 添加到 AjaxEventBehavior 内的组件中。行为具有 getComponent() 方法,但在构造函数中 getComponent() 显然返回 null。

现在我将组件传递给 AjaxEventBehavior 的构造函数并且它正在工作,但这是实现我的目标的好方法..

这就是我正在做的事情:

AjaxTooltip 行为:

public class AjaxTooltipBehavior extends AjaxEventBehavior {
      public AjaxTooltipBehaviour(String event, Component tooltippedComponent) {
           super(event);
           tooltippedComponent.add(new AttributeAppender("data-tooltip","wicketAjaxTooltip"));
      }    

      ...
}

这就是我使用它的方式:

 ...
 final WebMarkupContainer icon = new WebMarkupContainer("icon"); //a tooltiped icon
 icon2.add(new AjaxTooltipBehaviour("mouseover",icon2)

我问自己是否没有办法在不将组件传递给 AjaxTooltipBehavior 的情况下将 AttributeAppender 添加到组件中。有谁知道这在检票口中是否可行,或者是否有更好的解决方案?仅供参考:我正在使用 wicket 1.6。

提前感谢您的支持!罗尼

4

3 回答 3

2

通常您会覆盖Behavior#onBind(Component),但此方法在AbstractAjaxBehavior. 但它会调用onBind()并且你getComponent()在那里使用:

@Override
protected void onBind() {
    super.onBind();
    getComponent().add(new AttributeAppender("data-tooltip","wicketAjaxTooltip"));
}
于 2012-12-10T08:09:09.940 回答
0

因为您已经从 AbstractAjaxBehavior 扩展(AjaxEventBehavior 扩展了 AbstractAjaxBehavior),所以您应该可以访问 getComponent(),这将为您提供行为所附加到的组件。

于 2012-12-10T03:53:51.063 回答
-1

我覆盖Behavior#onConfigure(Component component)它可能是添加行为或使用属于行为的组件做一些其他事情的最合适的方式。

@Override
protected void onConfigure(Component component) {
   super.onConfigure();
   component().add(new AttributeAppender("data-tooltip","wicketAjaxTooltip"));
}
于 2012-12-10T11:39:43.130 回答