gpt4 book ai didi

grails - 自定义标签g.each与每个闭包冲突

转载 作者:行者123 更新时间:2023-12-02 13:52:29 25 4
gpt4 key购买 nike

我有一个自定义标签,因为我想包装g:each

def myEach = { attrs, body ->
out << "${g.each(in:attrs.in, var:attrs.var, status:attrs.status) { 'test' }}"
}

但是每个标记都会出错,因为每个标记都与闭包混淆。有什么办法可以做到吗?最坏的情况是我将输出包含每个标签的gsp页面。

最佳答案

您可以完全按照Grails的方式注册自己的标签:

import org.apache.commons.lang.StringUtils;
import org.codehaus.groovy.grails.web.taglib.GroovySyntaxTag;
import org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException;

public class Whatever extends GroovySyntaxTag {

public static final String TAG_NAME = "youreach";

public void doStartTag() {
String in = attributes.get(ATTRIBUTE_IN);
if (StringUtils.isBlank(in)) {
throw new GrailsTagException("Tag [" + TAG_NAME + "] missing required attribute [" + ATTRIBUTE_IN + "]", parser.getPageName(), parser.getCurrentOutputLineNumber());
}

doEachMethod(in);
}

public void doEndTag() {
endEachMethod();
}

public String getName() {
return TAG_NAME;
}

@Override
public boolean isKeepPrecedingWhiteSpace() {
return true;
}

@Override
public boolean isAllowPrecedingContent() {
return true;
}
}

然后在 Bootstrap.groovy中,将该类注册为标签。
    GrailsTagRegistry.instance.registerTag(Whatever.TAG_NAME, Whatever.class)

您可以创建自己的类,该类扩展了 GroovySyntaxTag来操作那里的任何方法。然后让此类扩展它。

关于grails - 自定义标签g.each与每个闭包冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18335396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com