Grails从View调用Controller方法

时间:2011-06-14 16:40:46

标签: grails loops methods view controller

我有一个关于grails的快速问题。我有一个视图页面迭代一个对象数组来显示它们。 HTML / Grails标记代码如下所示:

<g:each in="${ICFList}" status="i" var="icf">
<tr>
    <td>${icf.printName?.encodeAsHTML()}</td>
    <td>${icf.activeNote?.encodeAsHTML()}</td>
</tr>
</g:each>

此代码可以显示我需要的内容。但是,我不想再在我的icf对象中存储printName变量。该对象还包含一个用于标识它的字符代码,我有一个方法可以根据代码查找printName值。基本上,我的问题是:

有没有办法做这样的事情

<td>${icf.getNameFromCode(${icf.code})}</td>

无需将名称存储在任何地方? getNameFromCode方法在此特定视图的控制器对象中定义,但我无法弄清楚如何从gsp访问它。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:6)

正式回答问题,您可以使用g:include

<g:include controller="book" action="list" />

虽然单个实体的字段更像是模型

答案 1 :(得分:4)

我认为你不能从视图中调用控制器方法。

我建议将getNameFromCode移动到域类或在taglib中实现逻辑并使用自定义标记来显示数据。选择哪个选项取决于该方法是指模型固有的东西还是与视图相关的东西。

最新的Getting started with Grails screencast解释了如何创建和使用自定义标记。

答案 2 :(得分:1)

也可以通过对此控制器进行AJAX调用来实现,但我认为Gustavo的答案正是您所寻找的。