如何在GSP中声明一个函数?我需要类似taglib的东西,但在GSP内声明 - 外部并不重要是否可以在GSP中声明一个函数?
回答
您无法在GSP中定义方法。但你可以有匿名函数,如果你想:d
例子:
<%
def prettify = { "***$it***" }
%>
<h1>${prettify(someText)}</h1>
虽然这个例子没有什么太大的意义,因为这一点格式化会内联。对于视图的任何一种额外的逻辑,我会遵循OverZealous recommendation并使用taglib。
不,不要这样做。这完全违背了普惠制的目的。 GSP旨在处理视觉标记信息,而不是编程逻辑。直接在您的GSP 中投掷功能会导致无法维护的代码混乱。
为什么你不把它放在标签中?这是标签的用途;它只在您的GSP中使用并不重要。普惠制只应包含简单的显示逻辑和输出内容。可复用代码应始终包含在taglib中或用于复杂逻辑的某种控制器或服务中。
你没有提到你使用的是什么框架,比如Gaelyk或Grails。 (除非你出于某种原因在服务器上使用纯粹的Groovy。)在没有更多信息的情况下,没有可行的方法来推荐一个好的解决方案。
如果您在GSP中使用JSP样式标签(<% %>
),则可能是错误的。
如果您想要更好的答案,请提供关于编程环境的更多详细信息,目标是什么,以及为什么(为什么您不想使用taglib)。
假设我有模板行。这个模板在这个GSP之外不会变化。是否可以在GSP中声明模板? – 2012-02-07 11:10:29
我会使用'
对于小型内部模板(如层次结构)可能很有用。 – Guillaume 2014-08-08 16:22:43
我同意在大多数情况下,a Taglib(或用'g:render'调用的子模板)是正确的解决方案。但有时候会有一些重复的逻辑,在GSP中只写一次是好事,但不能保证这样的升级到外部文件。在这些情况下,我喜欢这样写:' '注意定义闭包的双线性{{}}'。然后,您可以像使用常规函数那样使用它:'{{greet(“Sam”)}' –
Tobia
2015-05-20 10:41:54