Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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 双通道JSP页面呈现_Java_Jsp_Asynchronous - Fatal编程技术网

Java 双通道JSP页面呈现

Java 双通道JSP页面呈现,java,jsp,asynchronous,Java,Jsp,Asynchronous,假设一个例子。我有以下界面: public interface DataSource<T> { Future<T> fetch(); } 公共接口数据源{ 未来获取(); } 此数据源可以执行异步数据获取。对于在JSP中使用datasource,我们有以下标记: <html> <d:fetch from="${orderDS}" var="orders"> <c:foreach in="${orders}" var="o

假设一个例子。我有以下界面:

public interface DataSource<T> {

  Future<T> fetch();
}
公共接口数据源{
未来获取();
}
此数据源可以执行异步数据获取。对于在JSP中使用datasource,我们有以下标记:

<html>
  <d:fetch from="${orderDS}" var="orders">
    <c:foreach in="${orders}" var="order">
      <div class="order">
        <c:out value="${order.title}" />
      </div>
    </c:foreach>
  </d:fetch>
</html>

那么,我想要什么?我希望JSP呈现引擎调用我的自定义标记(本例中为FetchTag)两次。第一次调用时,FetchTag将执行DataSource.fetch()调用,并将Future本地保存为对象字段。在第二次调用FetchTag时,执行Future.get()调用,并将被阻止,直到数据可用为止


有没有办法做到这一点?

我认为更好的设计不会试图改变JSP呈现。将所有数据库代码放在它所属的服务器端,并使用AJAX调用从服务器端组件获取数据

一般来说,我发现在自定义标记库中嵌入东西是个坏主意。我只需要JSTL和/或Spring标记库。如果我觉得我的用户界面需要做更多的工作,我的想法是错误的


对于禁用JS的客户端,我只会让它们执行数据的往返,而不是在后台执行。给他们一个选择:等待或打开JS。

我认为更好的设计不会试图改变JSP呈现。将所有数据库代码放在它所属的服务器端,并使用AJAX调用从服务器端组件获取数据

一般来说,我发现在自定义标记库中嵌入东西是个坏主意。我只需要JSTL和/或Spring标记库。如果我觉得我的用户界面需要做更多的工作,我的想法是错误的


对于禁用JS的客户端,我只会让它们执行数据的往返,而不是在后台执行。给他们一个选择:等待或打开JS。

是的,我们已经考虑过了。但我们试图保存与禁用js的客户端的兼容性。也许有另一个模板引擎更适合这个任务?是的,我们考虑过了。但我们试图保存与禁用js的客户端的兼容性。可能存在另一个更适合此任务的模板引擎?