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

时间:2015-01-16 16:32:01

标签: java javascript tapestry

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

我的java代码中有变量。我在页面加载后需要在javascript中使用此变量的值。

例如java class:

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

和js:

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

如何将其直接传递给javascript?

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

我可以在页面中添加不可见标记,将值写入此标记并从js中读取。 但你知道另一种方式吗?

1 个答案:

答案 0 :(得分:3)

您需要使用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);
  }
}

Your RoomManagement.js

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