2012-08-22 71 views
3

我是grails中的新手,並嘗試從g.set中的messages.property(i18n)中設置gsp值,然後在java腳本中使用它在同一個gsp頁面上。例如:如何在gsp頁面調用javascript中的messages.property(參數化)值

我messages.property應該是這樣的: operation.hello =你好 '{0}'

在GSP應該有:

<g:set var="foo" value="${operation.hello('Patty')}" scope="page"/> 

<g:javascript> 
    alert($foo) 
</g:javascript> 

不知道如何處理這個。任何人都可以幫忙嗎?

我們的基本意圖是使用javascript中的parametrized-messages.property值。

試圖JAWR插件,並且運作良好,但JAWR了,我們沒有在我們的案例

回答

3

想只要你明白這一切都是在服務器端pocessed等問題,我想你需要做的是使用正確的語法:

<g:set var="foo" value="${g.message(code: 'operation.hello', args: ['Patty'])}" scope="page"/> 

<g:javascript> 
    alert("${foo}"); 
</g:javascript> 

通過這種到達瀏覽器的時候,它應該僅僅是閱讀:

<script type="text/javascript"> 
    alert("Hello Patty"); 
</script> 
+0

這很好。但是如何在g:set標籤中調用消息屬性? – Patty

+0

你是說你寫的設置foo變量的代碼不起作用嗎? – Gregg

+1

爲了安全起見,您應該使用'$ {foo.encodeAsJavaScript()}'來轉義消息中的雙引號和單引號。 –

1

如果我得到你的意思,基本上你不能。

G標籤是服務器端的東西。當g標籤被渲染時,它們的值參數必須存在,但不能將JavaScript(客戶端)值傳遞給g標籤(基本上它是服務器端片段)。你可以把一個g標籤的結果放到一個javascript字符串中,而不是相反。

1

這是回答您的問題嗎?

<script type="text/javascript"> 
    var helloTo = "Patty"; 
    var message = "${g.message(code: 'operation.hello', args: ["+ helloTo + "])}"; 
</script> 
相關問題