次の問題があります。次のようなデータの場合、指定されたコレクションをリストするTagLibraryを作成しました
class LisTagLib {
static final CONTEXT = this.class.name
/**
* Current data from collection
*/
def currentData;
String columnHeaders = "";
List writtenHeaders = [];
// draw main table
Closure listTable = { attrs, body ->
def writer = getOut()
writer << "<table>";
writer << "<thead>"
writer << "<tr>"
writer << columnHeaders
writer << "</tr>"
writer << "</thead>"
writer << "<tbody>"
if(attrs.source){
attrs.source.each() { value ->
writer << "<tr>";
writer << body()
writer << "</tr>";
}
}
// output the body
writer << "</tbody>";
writer << "</table>";
}
.
.
.
}
私の問題は、この taglib を呼び出すたびに「columnHeaders」プロパティが作成されないことです。これをページ X とページ Y のように呼び出すと、ページ Y にも「ページ X に表示されるヘッダー + ページ Y に表示されるヘッダー」というヘッダーがあります。コンストラクターを試しましたが、このクラスはコンパイル時に一度だけ構築されます。これに対する解決策は何ですか。この taglib を呼び出すたびにこれらの値をリセットするにはどうすればよいですか? ところで、次のような呼び出し
columnHeaders = "";
listTable クロージャーの先頭または末尾 すべての columnHeaders を削除し、ヘッダーは出力されません。