0

Apache Wicket を使用して、AjaxEventBehavior 内のコンポーネントに AttributeAppender を追加したいと考えています。ビヘイビアーには getComponent() メソッドがありますが、コンストラクターでは getComponent() は明らかに 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)

コンポーネントを AjaxTooltipBehavior に渡さずに、AttributeAppender をコンポーネントに追加する方法がないか自問しました。これが改札で可能かどうか、またはより良い解決策があるかどうかは誰にもわかりますか? 参考までに、私は wicket 1.6 を使用しています。

ご支援いただきありがとうございます。ロニー

4

3 に答える 3

2

通常はオーバーライドBehavior#onBind(Component)しますが、このメソッドはでfinalになり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 に答える