我有个简单的问题要问。我有一个 View 页面,该页面在一组对象上进行迭代以显示它们。 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>
无需将名称存储在任何地方?
在该特定 View 的 Controller 对象中定义了getNameFromCode方法,但是我不知道如何从gsp访问它。任何帮助是极大的赞赏。
最佳答案
我认为您不能从 View 中调用 Controller 方法。
我的建议是将getNameFromCode
移动到域类,或者在taglib中实现逻辑并使用自定义标签显示数据。选择哪个选项取决于该方法是引用模型固有的东西还是绑定(bind)到 View 的东西。
最新的Getting started with Grails screencast解释了如何创建和使用自定义标签。