在Javascript中动态使用g:message



有没有一种简单的方法可以在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文件中。

简短的回答是"否"。GSP标记只能在服务器端执行,而不能由浏览器(即JavaScript)执行。

然而,我希望至少有一个Grails插件可以实现以下功能:

  • 创建一个JavaScript对象,其中包含在messages*.properties文件中定义的消息
  • 提供了一个JavaScript函数,使您能够解析来自该对象的消息

因此,尽管不可能在浏览器中执行GSP标记,但在JavaScript中提供等效功能似乎并不困难。如果还没有一个Grails插件可以做到这一点,我会感到惊讶。

这里有一个非常简单的例子,说明如何使用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);
    }
});

最新更新