将参数从 java 传递给 Tapestry 中的 js

Pass parameter from java to js in Tapestry

我使用 Apache Tapestry 作为 Web 应用程序框架。

我的 java 代码中有变量。页面加载后,我需要 java 脚本中此变量的值。

例如java class:

@Import(library = "RoomManagement.js")
public final class RoomManagement{
  @Property
  private long contactId;
}

和 RoomManagement.js 中的 js:

window.onload = function(){
    alert(contactId);
}

如何将它直接传递给 java脚本?

我无法将值传递给 js 之类的模板,因为它是 .js 文件而不是 .tml。

我可以向我的页面添加不可见标签,将值写入此标签并从 js 读取它。 但是你知道另一种方法吗?

您将需要使用 JavaScriptSupport 服务。

您的 java 文件:

@Import(library = "RoomManagement.js")
public final class RoomManagement{

  @Inject
  private JavaScriptSupport javascriptSupport;

  @Property
  private long contactId;

  @AfterRender
  private void setup() {
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("contactId", contactId);
    javascriptSupport.addInitializerCall("RoomManagement",jsonObject);
  }
}

你的RoomManagement.js

Tapestry.Initializer.RoomManagement = function (parameters) {
    //do whatever you need here
    alert('Your contactId: ' + parameters.contactId);
};