首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建自定义GSP标记而不编写Groovy代码

问创建自定义GSP标记而不编写Groovy代码
EN

Stack Overflow用户
提问于 2013-11-29 22:37:37
回答 2查看 789关注 0票数 1

是否可以在不编写Groovy代码和将HTML嵌入代码的情况下创建自定义GSP标记(更多的是JSP风格的创建自定义标记的方式)?

我有一个菜单,其中包括一些项目,比如:

代码语言:javascript
复制
<li class="menu-item">
  <g:link controller="someController" action="someAction" id="123">
    My Item Text
  </g:link>
</li>

我想要创建一个新的GSP标签,以简化我的页面,因为它将重复多次。所以,我想创建这样的东西:

代码语言:javascript
复制
<my:menuitem controller="someController" action="someAction" id="123" text="My Item Text"/>

我知道我可以创建一个自定义标签库,并使用Groovy代码创建标记。但是,我真的不喜欢将HTML嵌入到Groovy文件中的想法。在过去,我没有编写Java代码就在JSP文件中创建了JSP标记库。到目前为止,查看Grails的文档,我还没有看到类似的样式。

另外,可以在GSP中使用自定义JSP标记吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-30 03:31:35

在没有Taglib的情况下,我可以看到做您想做的事情的唯一方法是使用g:render并将您的值传递给模型属性。如下所示:

代码语言:javascript
复制
<g:render template="myTemplate" model="[controller: 'someController', action: 'someAction', id: 123, text: 'My Text Item']" />

然后,在您的实际模板中,您将得到以下内容:

代码语言:javascript
复制
<li class="menu-item">
  <g:link controller="${controller}" action="${action}" id="${id}">
    ${text}
  </g:link>
</li>
票数 2
EN

Stack Overflow用户

发布于 2013-11-30 01:07:10

您可以使用template通过render标记来实现这一点,如文档的“视图和模板”部分所解释的那样。值得注意的是,您将模板文件命名为前导下划线,但在没有下划线的render标记中引用它。

另一种选择是使用您所描述的自定义标记库,但是使用Groovy MarkupBuilder创建HTML。它需要一些习惯(语法有点奇怪),但一旦你做了几次,它就变成了第二天性。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20294247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档