有一种在Javascript中以动态方式使用g:message功能的简单方法,例如
function get_i18n( myAttr ) {
return "${message(code:'" + myAttr + "')} ";
}
这样我就可以执行函数调用
pl_get_i18n( "xyz" )
用于预定义的i18属性xzy?
就像这里一样,但动态:https://stackoverflow.com/a/8296812/1779814
PS:JS代码包含在GSP文件中。
答案 0 :(得分:2)
简短的回答是" no"。 GSP标签只能在服务器端执行,而不能由浏览器(即JavaScript)执行。
但是,我希望至少有一个Grails插件可以执行以下操作:
messages*.properties
文件中定义的消息因此,尽管在浏览器中无法执行GSP标记,但在JavaScript中提供等效功能似乎并不十分困难。如果没有Grails插件可以执行此操作,我会感到惊讶。
答案 1 :(得分:2)
这是一个非常简单的例子,说明如何使用AJAX从服务器获取消息代码。
// AjaxMessageController.groovy
package example
import grails.converters.JSON
class AjaxMessageController {
def index() {
render [message: message(code: param.code)] as JSON
}
}
然后在您的页面中,您可以在此示例中使用ajax调用(基于jQuery)来查找消息代码:
var someMessageCode = 'something.you.want';
$.ajax({
dataType: 'json',
url: '${createLinK(controller: "ajaxMessage", action: "index"}',
data: {code: someMessageCode},
success: function(data) {
window.alert(data.message);
}
});