Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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 用线程执行完成后返回的值填充Spring模型属性_Java_Spring_Jakarta Ee - Fatal编程技术网

Java 用线程执行完成后返回的值填充Spring模型属性

Java 用线程执行完成后返回的值填充Spring模型属性,java,spring,jakarta-ee,Java,Spring,Jakarta Ee,我正在使用Spring3.0框架 我有一个关于线程及其结果的问题。 我的项目有许多控制器及其方法 我已经创建了一个线程,它将在Controller的一个方法中被调用,我希望它的结果应该添加到model属性中,因为我希望在JSP中显示结果 问题是,虽然我在模型属性位中添加了线程结果,但在JSP中它的结果是空的。因为use当前未使用该控制器 例: Spring Controller{ //mapping String controllerMethod1(Model mode

我正在使用Spring3.0框架

我有一个关于线程及其结果的问题。 我的项目有许多控制器及其方法

我已经创建了一个线程,它将在Controller的一个方法中被调用,我希望它的结果应该添加到model属性中,因为我希望在JSP中显示结果

问题是,虽然我在模型属性位中添加了线程结果,但在JSP中它的结果是空的。因为use当前未使用该控制器

例:

    Spring Controller{

    //mapping
    String controllerMethod1(Model model){

    }

    //mapping
    String controllerMethod2(Model model){
      //thread will calling on this controller method
       //new myThread
      var result=new myThread.start();

      model.addattr("res",result);
    }

    //mapping
    String controllerMethod3(Model model){

    }

    //mapping
    String controllerMethod4(Model model){

    }

    //mapping
    String controllerMethod5(Model model){
    }

    }
有许多这样的控制器 在每个控制器的每个返回JSP页面中,我有
${res}
来显示线程返回结果

请给我合适的解决方案,谢谢

我知道Spring3.2中有不同的结果概念,但Spring3.0中没有。
请给我其他解决方案,如Deferedresult

如果我理解正确,您不希望模型包含
线程
对象,而是希望它包含线程计算的结果。您需要查看
未来的
类。但即便如此,我也怀疑这对你会有多大帮助;JSP呈现代码将在控制器方法返回后很快获得线程的结果,因此计算值的时间不会太长。您需要重新考虑使用线程的原因。

如果我理解正确,您不希望模型包含
线程
对象,而是希望它包含线程计算的结果。您需要查看
未来的
类。但即便如此,我也怀疑这对你会有多大帮助;JSP呈现代码将在控制器方法返回后很快获得线程的结果,因此计算值的时间不会太长。您需要重新考虑为什么要使用线程。

我暂时找到了解决方案,但我希望更好。。。 我的解决方案: 我正在使用ExcecutorService创建单线程。该服务一次执行一个线程。每个线程完成后,我将在会话中添加结果,并在显示会话结果后删除该会话属性


就这样

我暂时找到了解决方案,但我想要更好的。。。 我的解决方案: 我正在使用ExcecutorService创建单线程。该服务一次执行一个线程。每个线程完成后,我将在会话中添加结果,并在显示会话结果后删除该会话属性


就这样

而不是自己创建线程,考虑使用线程池(参见<代码> ExtutoService < /Class >类)。我正在使用线程池,但重要的是,我希望在JSP页面上显示结果而不是自己创建线程,考虑使用线程池(参见<代码> ExtutoService < /Class >类)。。我正在使用线程池,但重要的问题是,我希望结果显示在JSP页面上,因为该过程需要时间,而且我们不想打扰用户,因此我们正在使用线程,完成后我们只想通知用户该过程已完成。您不能使用HTTP和纯HTML进行此操作。您不能告诉用户“请等待结果…”,然后在一段时间后用实际结果替换该消息。HTTP是一种请求-响应协议,因此无法向客户端(web浏览器)发送更新的响应。您可以使用AJAX实现这一点。但是使用线程对您没有帮助。我们没有显示请稍候…这就是为什么我们在后台使用线程,只是想显示结果我认为您对HTTP和JSP的工作方式有一个根本性的误解。我想要的解决方案与spring 3.2中的解决方案不同。但我使用的是spring 3.0。所以我想要替代方案?因为这是一个过程需要时间,我们不想打扰用户,因此我们使用线程,完成后我们只想通知用户进程已完成。您不能使用HTTP和纯HTML来完成。您不能告诉用户“请等待结果…”,然后在一段时间后用实际结果替换该消息。HTTP是一种请求-响应协议,因此无法向客户端(web浏览器)发送更新的响应。您可以使用AJAX实现这一点。但是使用线程对您没有帮助。我们没有显示请稍候…这就是为什么我们在后台使用线程,只是想显示结果我认为您对HTTP和JSP的工作方式有一个根本性的误解。我想要的解决方案与spring 3.2中的解决方案不同。但我使用的是spring 3.0。所以我想要替代方案?