javascript - jQuery 中的 Tapestry 属性

标签 javascript jquery tapestry

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

相关文章:

javascript - 接收数据json/jquery

javascript - Angular Material 从 $mdDialog 获取数据并按索引将其传递到表中

javascript - .delay() 一个 .css() Action 乘以一个索引号

java - 如何从 Tapestry 代码调用对话框上的 javascript?

java - 如何从同名的 Tapestry 文本字段中获取数据?

Javascript:递归、jQuery 错误

javascript - JQuery slider : Transition from last image to first

javascript - 在 YUI 或 jQuery 之间进行选择会影响 .js 文件的整体设计吗?

jquery - 使用 jQuery 将标签转换为下拉菜单

java - Liquibase 与 Tapestry 和 Hibernate 集成 : initial schema creation step