2013-04-05 68 views
0

我正在使用g:呈现grails标记以避免在我的应用中重复公共部分的HTML以重复。 现在我需要通过message.properties文件传递一些属性,例如节的标题,以便可以翻译这些属性。 为了让我使用这种结构的工作:Grails呈现标记和message.properties

<g:set var="title" value="${g.message (code: 'completed.thanks')}" /> 
<g:render template="thankYou" contextPath="/completed/" model="[title:title,other:other]" /> 

,但我不知道是否有任何更好的解决方案,以提供在渲染标签本身的型号的字符串。

+0

你有反对把消息标签模板,而只传送消息的代码原因是什么? – Rhysyngsun 2013-04-05 02:51:28

+0

是的,我的确:我在页面的几个区域重复使用相同的html结构,但每个都有不同的标题和内容。 – 2013-04-05 03:02:23

+0

您的方法没有任何问题。您可以将代码作为变量传递,并在模板中调用g.message,但它与您当前正在做的事情没有多大区别。 – rimero 2013-04-05 06:30:14

回答

1

如果传递的属性很多,这种方法不能是最好的。在这种情况下,我建议使用customTaglib来实现g:message的custo实现。这个自定义的gMessage可以例如通过约定查找由模型参数前缀的属性。与gsp的渲染相比,您只能在模型中设置前缀字符串。

<g:render template="thankYou" contextPath="/completed/" model="[prefix: 'pagex']" /> 

在模板GSP:

... 
<custom:message code="completed.thanks" prefix="${prefix}"/> 
<custom:message code="completed.byebye" prefix="${prefix}"/> 
... 

属性文件中

pagex.thanks=bla bla bla 
pagex.byebye=bla bla bla 
pagey.thanks=bla bla bla 
pagey.byebye=bla bla bla