Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Wicket:可以从线程更新标签值吗?_Java_Wicket - Fatal编程技术网

Java Wicket:可以从线程更新标签值吗?

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() {

例如,我有一个html范围,当应用程序进行一些测试时(比如DoPost,然后等待响应并表示结果),应该更新它。所以我想在这段时间里展示一下这项行动的最新进展

我已经尝试在myPage.java中创建线程来扩展网页。它的定义是:

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)。