我想使用Apache Wicket向AjaxEventBehavior中的Component添加一个AttributeAppender。一个Behavior有一个getComponent()方法但是在构造函数中getComponent()obvioulsy返回null。
现在我将组件传递给AjaxEventBehavior的构造函数并且它正在工作,但这是实现我的目标的好方法..
这就是我正在做的事情:
AjaxTooltipBehavior:
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)
我问自己是否没有办法将AttributeAppender添加到组件而不将组件传递给AjaxTooltipBehavior。 有谁知道这是否可能在检票口或是否有更好的解决方案? 仅供参考:我正在使用wicket 1.6。
提前感谢您的支持! 罗尼
答案 0 :(得分:2)
通常你会覆盖Behavior#onBind(Component)
,但这个方法在AbstractAjaxBehavior
中是最终的。但它会调用onBind()
并在那里使用getComponent()
:
@Override
protected void onBind() {
super.onBind();
getComponent().add(new AttributeAppender("data-tooltip","wicketAjaxTooltip"));
}
答案 1 :(得分:0)
因为您已从AbstractAjaxBehavior扩展(AjaxEventBehavior扩展AbstractAjaxBehavior),您应该获得对getComponent()的访问权限,这将为您提供附加行为的组件。
答案 2 :(得分:-1)
我覆盖Behavior#onConfigure(Component component)
可能是最适合添加行为的方法,或者使用属于行为的组件执行其他操作。
@Override
protected void onConfigure(Component component) {
super.onConfigure();
component().add(new AttributeAppender("data-tooltip","wicketAjaxTooltip"));
}