2016-02-12 57 views
1

我有一個問題,字符串參數被截斷爲我們的g:message標記中的第一個字符(longs /整數似乎很好)。g:帶有javascript/jQuery參數的消息按預期工作不起作用

最後,我想通了,我們不叫G:消息在JavaScript語法正確因此一些小的調整,解決了該問題。問題是 - 我不明白爲什麼前者不起作用。

任何人都可以描述這裏發生了什麼?

jQuery("#myId").html("<g:message code='domain.message.path' args="${command?.foo?.name}"/>"); //incorrect, only displays first character of message 

jQuery("#myId").html("${g.message(code: 'domain.message.path', args: [command?.foo?.name])}"); //correct, displays full string 

回答

3

我假設你將它作爲.gsp頁面的一部分進行渲染?這是事情。在第一個中,你嵌套了引號,基本上離開了字符串的$ {}部分。即使Stackoverflow可以告訴;注意,一部分是如何以不同的顏色:

jQuery("#myId").html("<g:message code='domain.message.path' args="${command?.foo?.name}"/>"); 

查看如何在HTML(末尾的報價是$ {之前的報價結束,留下$ {命令包含.foo。名稱}塊外? ?字符串如果command.foo.name是字符串「鮑勃」,那麼當這個渲染,你會得到:

jQuery("#myId").html("<g:message code='domain.message.path' args="bob"/>"); 

你可能認爲這看起來正確,但JavaScript就不好處理這個

。如果您對內部字符串使用單引號,就像使用'domain.message.path'一樣,它應該可以正常工作:

jQuery("#myId").html("<g:message code='domain.message.path' args='${command?.foo?.name}'/>");