Java Wicket:可以从线程更新标签值吗?
例如,我有一个html范围,当应用程序进行一些测试时(比如DoPost,然后等待响应并表示结果),应该更新它。所以我想在这段时间里展示一下这项行动的最新进展 我已经尝试在myPage.java中创建线程来扩展网页。它的定义是:Java Wicket:可以从线程更新标签值吗?,java,wicket,Java,Wicket,例如,我有一个html范围,当应用程序进行一些测试时(比如DoPost,然后等待响应并表示结果),应该更新它。所以我想在这段时间里展示一下这项行动的最新进展 我已经尝试在myPage.java中创建线程来扩展网页。它的定义是: class TestThread extends Thread{ private Label current_message_lbl; private Component component; public void run() {
class TestThread extends Thread{
private Label current_message_lbl;
private Component component;
public void run() {
try {
this.sleep(1000);
current_message_lbl.setDefaultModelObject(new StringResourceModel("test-SENDING-COMMANDS",component, null));
/* HTTP POST and other test code*/
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public void setCurrentMesssageLabel(Label current_message_lbl){
this.current_message_lbl = current_message_lbl;
}
public void setComponent(Component component){
this.component = component;
}
}
我从以下几点开始:
TestThread thread = new TestThread();
thread.setCurrentMesssageLabel(current_message_lbl);
thread.setComponent(component);
thread.start();
在我收到这个错误信息之后
当前线程thread-103没有附加任何应用程序
我也尝试过像这样定义线程:
class TestThread extends WicketApplication implements Runnable{
您可以添加到组件中。然后,此行为每隔几秒钟或每隔几秒钟就会更新一次组件。但您必须在线程中更改组件的模型
此外,如果您尝试延迟加载组件,则可以进行检查。和中有一些示例。您可以添加到组件中。然后,此行为每隔几秒钟或每隔几秒钟就会更新一次组件。但您必须在线程中更改组件的模型
此外,如果您尝试延迟加载组件,则可以进行检查。和中有一些示例。如果您正在生成一个单独的线程并从主请求线程返回HTTP响应,那么更新的信息应该如何到达用户的浏览器?请查看,它提供了您想要的功能(即从服务器端移动到客户端的更新)。通过当前的_消息_lbl.setDefaultModelObject。在wicket中,当我在web page类中执行此操作时,它会在不使用浏览器的情况下更新信息,但是如果我在web page类中添加sleep(),则页面会被卡住,无法执行任何操作,原因可能是没有睡眠,模型的更新速度足够快,可以在到达渲染阶段时让Wicket注意到它。从技术上讲,我认为你的方法是不可行的,除非你使用服务器端推送(@see cometd,websocket和co)。如果你正在生成一个单独的线程并从主请求线程返回HTTP响应,那么更新的信息应该如何到达用户的浏览器?看看,它提供了您想要的功能(即从服务器端移动到客户端的更新)。在wicket中,当我在web page类中执行此操作时,它会在不使用浏览器的情况下更新信息,但是如果我在web page类中添加sleep(),则页面会被卡住,无法执行任何操作,原因可能是没有睡眠,模型的更新速度足够快,可以在到达渲染阶段时让Wicket注意到它。从技术上讲,我认为您的方法不可行,除非您使用服务器端推送(@see cometd、websocket和co)。