gpt4 book ai didi

javascript - jQuery 中的 Tapestry 属性

转载 作者:行者123 更新时间:2023-12-03 12:32:30 24 4
gpt4 key购买 nike

我有两个文件:“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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com