我使用Apache Tapestry作为Web应用程序框架。
我的Java代码中有变量。页面加载后,我需要在javascript中此变量的值。
例如java类:
@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读取。
但是你知道另一种方式吗?
最佳答案
您将需要使用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);
};