Grails标记库重置属性
我有以下问题。我创建了一个TagLibrary,其中列出了给定的集合if数据,如下所示Grails标记库重置属性,grails,taglib,Grails,Taglib,我有以下问题。我创建了一个TagLibrary,其中列出了给定的集合if数据,如下所示 class LisTagLib { static final CONTEXT = this.class.name /** * Current data from collection */ def currentData; String columnHeaders = ""; List
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>";
}
.
.
.
}
在列表表的开头或结尾,闭包将删除所有列标题,并且不打印任何标题。标记库是单例的,因此类范围字段(如
currentData
、columnHeaders
)和writtenHeaders
)由所有请求共享。Springbeans默认为单例,Grails中就是这种情况,但控制器是根据请求创建的,可以有状态(但不应该)
解决方法是将这些字段作为变量移动到标记体中,并在需要时将它们作为参数传递给帮助器方法,而不是将它们作为类字段引用
p、 s.丢失分号:)标记库是单例的,因此所有请求都共享类作用域字段,如
currentData
、columnHeaders
、和writenHeaders
。Springbeans默认为单例,Grails中就是这种情况,但控制器是根据请求创建的,可以有状态(但不应该)
解决方法是将这些字段作为变量移动到标记体中,并在需要时将它们作为参数传递给帮助器方法,而不是将它们作为类字段引用
p、 s.丢失分号:)
columnHeaders = "";