1

ウィケット LinkTree を使用しています。ツリーが構築されてページにレンダリングされると、アプリケーションのツリーに新しいノードを動的に追加できます。新しいノードが追加されたら、新しく追加されたノードを別の色 (たとえば赤) で表示したいと考えています。

私たちが取った(しかしうまくいかなかった)1つのアプローチは次のとおりです。次のように、LinkTree クラスを拡張し、newNodeComponent メソッドをオーバーライドします。

@Override
protected Component newNodeComponent(String id, IModel<Object> model) {
    return new LinkIconPanel(id, model, TalepTreeForTTBina.this) {
        private static final long serialVersionUID = 4518741854057038753L;

        @Override
        protected void onNodeLinkClicked(Object node, BaseTree tree, AjaxRequestTarget target)
        { . . . . . . 

次に、この LinkIconPanel Thing に html 属性 (クラス) を追加します。その後、jquery 関数を記述してツリー上のそのクラスを調べ、テキストが表示される < td > (または実際には < span >) タグの色を変更することを計画しました。ただし、取得する最終的なマークアップは次のようなものです。

< td class="myClass" . . . .>
  < wicket:panel ....>
    < table . . . >
      < tbody . . . >
        < tr . . . >
          < td . . . >
            < a ...>
              < span > my text that I want to change the color < /span >

一番外側の td タグ (上の一番上) にはアクセスできますが、Java Wicket コードから内側のタグにはアクセスできません。したがって、改札コードの最も外側の td タグに myClass を挿入し、クライアントの jquery 側から色を処理することを望んでいます。< wicket:panel > タグが間にあるため、(私の css コードから) jquery (または css) から < table> タグに到達できないようです。

私の質問は: 1. LinkTree ノードの色を変更するより良い方法はありますか? 2. これが私が進むべき道である場合、css からその < span > タグに到達するにはどうすればよいですか? コードにツリーノードを手動で追加していないため、RenderBodyOnly(true) を使用できず、ノード (ノードとして追加される項目) にアクセスできません。LinkTree は私のためにそれを行います。

助けていただければ幸いです。ありがとう。

4

2 に答える 2

0

LinkIconPanel の newContentComponent メソッドをオーバーライドします。新しい Label を提供しますが、その onComponentTag メソッドをオーバーライドして、class 属性と値を追加します。

@Override
protected Component newContentComponent(String componentId, BaseTree tree,
        IModel<?> model) 
{       
    return new Label(componentId, model)
    {
        @Override
        protected void onComponentTag(ComponentTag tag) 
        {
            tag.put("class", "colourMe");
            super.onComponentTag(tag);
        }
    };
}

これにより、class 属性が span タグに追加され、次のように html がレンダリングされます。

< a >
       < span class="colourMe"> my text that I want to change the color < /span >
</ a >

jquery は必要ありません。class 属性を使用してテキストに色を付けることができます。

于 2012-11-07T15:00:26.430 に答える
0

SimpleAttributeModifier を使用して、html マークアップの css を次のように変更します。

例.css:

span.new-yellow { background: #dadada; color: #dddd55 }

例.java:

SimpleAttributeModifier sam = new SimpleAttributeModifier("class", ".alt-yellow");
if(node.) {
    exampleComponent.add(sam);
}

おそらく、ノードにモデルを作成して「新規」であることを示し、この場合は SimpleAttributeModifier を追加できますか?

別のオプションは、HeaderContributor を使用して、次の行に沿って何かを行うことです。

        add(new HeaderContributor(new IHeaderContributor() {
            public void renderHead(IHeaderResponse response) {
                response.renderOnLoadJavascript("document.getElementById('" + node.getMarkupId() + "').YOUR_JAVASCRIPT_HERE");
            }
        }));

考え直してみると、それは Ajax フレンドリーではないかもしれません。とにかく、いくつかの考え。幸運を!

于 2012-11-06T19:15:59.630 に答える