Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.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 使用带有非常大的寄存器或数据的thymeleaf填充表_Java_Html_Spring_Populate_Thymeleaf - Fatal编程技术网

Java 使用带有非常大的寄存器或数据的thymeleaf填充表

Java 使用带有非常大的寄存器或数据的thymeleaf填充表,java,html,spring,populate,thymeleaf,Java,Html,Spring,Populate,Thymeleaf,大家好,我在一个使用thymeleaf的spring mvc项目中工作,我有一个方法执行一个非常复杂的查询,需要7秒才能返回1500行,我必须使用thymeleaf用该数据填充一个表,但是填充表需要太多时间,填充表和显示网页需要1分钟,因此,加载页面需要1分钟,当您有大量数据时,有没有一种方法可以在不占用太多时间的情况下填充表格 我过去认为加载花费的时间太多是因为我的方法返回一个对象列表,我需要将该对象列表强制转换为我正确的POJO对象,所以我必须循环列表并强制转换每个对象 但这并不是因为我尝试

大家好,我在一个使用thymeleaf的spring mvc项目中工作,我有一个方法执行一个非常复杂的查询,需要
7秒才能返回1500行,我必须使用thymeleaf用该数据填充一个表,但是填充表需要太多时间,填充表和显示网页需要1分钟,因此,加载页面需要1分钟,当您有大量数据时,有没有一种方法可以在不占用太多时间的情况下填充表格

我过去认为加载花费的时间太多是因为我的方法返回一个对象列表,我需要将该对象列表强制转换为我正确的POJO对象,所以我必须循环列表并强制转换每个对象

但这并不是因为我尝试了以下测试

1) 我尝试在没有强制转换方法的简单文本区域中打印列表对象,它打印了所有对象,显示网页花费了
9秒,但您需要花费查询带来数据所花费的7秒时间

它在我的文本区域打印了1000个这样的对象:

[Ljava.lang.Object;@e9548,[Ljava.lang.Object;@e9548

2) 我尝试用我的方法在一个简单的文本区域中打印列表,该方法将每个对象强制转换为我的POJO对象,所用的时间
10秒
几乎与我在没有强制转换方法的情况下打印原始对象列表所用的时间相同

它在我的文本区域中打印了1000个这样的对象:
com.abc.serviceClass。Person@252c46,com.abc.serviceClass。Person@252c46,com.abc.serviceClass。Person@252c46,com.abc.serviceClass。Person@252c46.....

3) 这就是为什么我认为使用thymeleaf填充表格的方法有一个错误,即加载网页几乎需要
1分钟
,因为当我使用此代码填充表格时

<table>
    <tbody>
          <tr th:each="nodeInfo : ${listOfPojos}">

                                            <td th:text="${nodeInfo.name}"></td>

                                            <td th:text="${nodeInfo.lastName}"></td>
        </tr>  



     </tbody>
</table>


th:each
必须输入的是我的项目列表中的1500个寄存器,并打印出我认为的值,这就是为什么在我输入代码时显示我的网页需要花费太多时间的原因,这就是为什么我想问,如果使用1500个POJO对象的列表而不使用ole只需一分钟即可显示页面。

首先,请记住,即使当前浏览器的性能越来越高,也不建议在客户端显示如此多的行

无论如何,对于您的特殊需求,如果您(我的意思是您的客户)接受分页结果,可能会有所帮助,尤其是它的功能

在后台,DataTables使用一些信息执行AJAX调用,例如要显示的行数、起始元素和结束元素。当然,您必须在服务器端提供一些读取这些参数并执行相应查询的查询

可以使用您的技术堆栈获取示例


StackOverflow要求的免责声明,我是Dandelion项目的作者。

几天前我们遇到了完全相同的问题,但我们最终决定切换到AJAX调用,Thymleaf在使用th:each时一点也不好,我希望他们在下一个Release中做一些更好的更改。我们的页面现在已加载,没有填充这个大列表在服务器端,一切都发生在客户端Hi-man,你能帮我吗,或者指向一个教程,或者你是怎么做到的,当你在客户端说,这意味着你的html页面中有一个
javaScript
脚本来填充表?如果是这样的话,你如何得到所有POJO的列表?在我的例子中是
Listophersons
因为我是从这样的控制器中获取该列表的:
model.addAttribute(“listOfPOJOs”,myList,它是从方法中获取的)
当你们谈论服务器端时,我有一个疑问,你们在谈论什么部分?因为我相信在服务器端没有办法填充一个表,我在服务器端做的是从数据库中获取数据,将数据放入一个列表,然后将该列表返回到html页面(我知道html页面是客户端),那么如何在服务器端填充表,然后返回表呢???事实上,在服务器端填充表是没有办法的,我认为也没有很好的理由。服务器端处理,我指的是“一种让所有的”繁重工作“由服务器端的数据库引擎完成(它们毕竟针对这类事情进行了高度优化),然后在用户的web浏览器中绘制这些信息”(引自)。因此,诀窍是通过返回已过滤/分页的行列表来执行尽可能少的客户端处理。mmmm因此,既然我无法修改我的查询,我该怎么做,我不介意使用javascript或ajax(如果有帮助的话)。但我怀疑我需要修改什么?提取数据的方式??,我不介意等待e运行查询需要8秒,转换POJO列表中的数据所需的时间,我的问题是thymeleaf循环
需要40秒。那么在将POJO列表传递到html页面之前,我应该如何处理它呢??