2013-04-05 79 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