我有两个文件:“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”之后的文件? 谢谢
最佳答案
关于扩展
扩展仅适用于您的模板(.tml 文件)或组件类(例如,如果您使用 @Component
注释)。
组件参数文档:
https://tapestry.apache.org/component-parameters.html
您无法访问存储在服务器上的 JavaScript 文件。但您可以将它们与脚本的初始化脚本一起传递。
如何向页面添加自定义脚本
不要对您的模板执行此操作:
<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);
关于javascript - jQuery 中的 Tapestry 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23869513/