Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails 如何从GSP中的常规助手方法设置变量?_Grails_Gsp - Fatal编程技术网

Grails 如何从GSP中的常规助手方法设置变量?

Grails 如何从GSP中的常规助手方法设置变量?,grails,gsp,Grails,Gsp,我需要输出html,其中的值取决于我拥有的对象的类型(我正在DB表示之间转换)。现在我把我的逻辑放在一块g:if表达式中。它的读取和调试相对比较困难 <g:if test="${o.isKindA}"> <g:set var="x" value="${...}" /> <g:set var="y" value="${...}" /> ... </g:if> <g:else> <g:set var="

我需要输出html,其中的值取决于我拥有的对象的类型(我正在DB表示之间转换)。现在我把我的逻辑放在一块
g:if
表达式中。它的读取和调试相对比较困难

<g:if test="${o.isKindA}">
    <g:set var="x" value="${...}" />
    <g:set var="y" value="${...}" />
    ...
</g:if>
<g:else>
    <g:set var="x" value="${...}" />
    <g:set var="y" value="${...}" />
    ...
</g:else>
然而,这是失败的。当我尝试使用
x
时,它被绑定到一个空的StreamCharBuffer,可能是因为我在
valueXFor
的实现中没有将任何内容附加到
out
。它应该具有我的助手的整数返回值


在我看来,如何使用这样的函数帮助器方法?

问题是默认情况下,标记库用于渲染到
输出
。在这种情况下,您希望从方法返回一个对象/值,并且需要告诉
TagLib
,此方法不同于标准行为。添加以下内容可以实现此目的:

class AmazingTagLib {
    static returnObjectForTags = ['valueXFor']
    def valueXFor = { attrs -> o.isKindA? 1 : 2 }
    ...
}

在标记库中定义方法之前,请尝试添加以下内容:
static returnObjectForTags=['valueXFor']
Omg,@JoshuaMoore,就是这样!提交答案!你将从我的同事那里得到几十分。非常乐意帮忙。(:
class AmazingTagLib {
    static returnObjectForTags = ['valueXFor']
    def valueXFor = { attrs -> o.isKindA? 1 : 2 }
    ...
}