我有两个文件:“Index.properties”,“Index_es.properties”,用于Tapestry中的多语言。 我想从* .js文件中的那些文件中读取文字,例如:
**Index.properties:**
menu=Main menu
menu-welcome=Welcome to my webpage
**Index_es.properties:**
menu=Menú principal
menu-welcome=Bienvenido a mi página web
**Index.tml:**
...
<script type="text/javascript" language="JavaScript"
src="${context:/javaScript/menu.js}"></script>
...
**menu.js:**
...
var currentOption=$('#activemenu').attr('name');
if (currentOption=="menu"){
$("#button1txt").text("${message:option1}");
}
...
如何阅读“menu.js”以来的文件? 谢谢
答案 0 :(得分:1)
例如,如果使用@Component
注释,扩展仅适用于模板(.tml文件)或组件类。
组件参数文档:
https://tapestry.apache.org/component-parameters.html
您无法访问存储在服务器上的JavaScript文件。但是您可以将它们与脚本的init脚本一起传递。
请勿对您的模板执行此操作:
<script type="text/javascript" language="JavaScript" src="${context:/javaScript/menu.js}"></script>
请改为使用您的网页类:
@Import(library = { "context:javaScript/menu.js" })
public class Index {
}
阅读有关此功能的文档以了解详情:http://tapestry.apache.org/javascript.html
凭借所有这些知识,您现在宁愿想要传递菜单脚本的翻译,如下所示:
@Import(library = { "context:javaScript/menu.js" })
public class Index {
@Inject
private Messages messages;
@Inject
private JavaScriptSupport javaScriptSupport;
void afterRender() {
javaScriptSupport.addInitializerCall("initMenu", new JSONObject()
put("option1", messages.get("option1"))
);
}
}
menu.js
(function( $, window ) {
'use scrict';
$.extend(Tapestry.Initializer, {
initMenu: function (spec) {
var currentOption=$('#activemenu').attr('name');
if (currentOption=="menu"){
$("#button1txt").text(spec.option1);
}
}
}
})(jQuery, window);