将参数从 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);
};
我使用 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);
};