2009-06-02 14 views
2

タペストリーの経験はあまりないので、どこから始めたらいいのか分かりません。Tapestry 4でInsertクラスを拡張することをどのようにお勧めしますか?

挿入コンポーネントに、挿入するコンポーネントに特定のCSSクラスを適用する新しいコンポーネント、たとえばNewInsertを拡張する必要があります。私はこれをどのようにするべきですか?

私は基本的に、<span class="myClass">The value</span>のようなものを生成するものにしたいと思っています。

なぜInsertを拡張するのですか?アプリケーションはかなり完成度が高いですが、私たちはどこでもインサートを使用しています。このCSSクラスが必要です。すべてのファイルで 'type = "Insert">' 'with' type = "NewInsert"> 'をグローバル置換するだけです。

答えて

2

私が望むことを達成するために、InsertのrenderComponentメソッドをオーバーライドしなければなりませんでした。これは、Tapestry 4.0.2にはsetStyleClassメソッドがないためです。我々はオーバーライドが挿入なぜ我々だけ

setStyleClass(MY_CLASS); 
super.renderComponent; 
0

を行っている可能性setStyleClass方法を持っている場合は

if (!cycle.isRewinding()) { 
     Object value = getValue(); 

     if (value != null) { 
     String styleClass; 
     String insert = null; 
     Format format = getFormat(); 

     if (format == null) { 
      insert = value.toString(); 
     } 
     else { 
      insert = format.format(value); 
     } 

     styleClass = getStyleClass(); 

     if (styleClass == null) { 
      /* No classes specified */ 
      styleClass = MY_CLASS; 
     } 
     else { 
      /* Append the preserveWhiteSpace class to the string listing the style classes. */ 
      styleClass += " " + MY_CLASS; 
     } 

     if (styleClass != null) { 
      writer.begin("span"); 
      writer.attribute("class", styleClass); 

      renderInformalParameters(writer, cycle); 
     } 

     writer.print(insert, getRaw()); 

     if (styleClass != null) { 
      /* </span> */ 
      writer.end(); 
     } 
     } 
    } 
    } 

のように、基本的に見えましたか?独自のInsertSpanコンポーネントを作成してみませんか? Insertのソースを見るだけで、どのようにシンプルなのか分かります...カットアンドペーストすることは自由です。オープンソースです。

さらに、Tapestry 5にアップグレードしてみてください。 Tapestry 4は約4年間で積極的に開発されていません。

関連する問題