有没有一种简单的方法可以在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);
}
});