按照计划我们来在input栏的下方添置一个表格,显示数据库中已有的分类栏目信息。

模板文件中加入表格的显示部分

打开editCatalog.ftl文件,找到原来的input这个元素的代码,在它的下一行开始,加入表格,如下:



<



运行起来,看一下效果,如图一:




java 页面显示NaN java界面显示不全_服务器


图一:表格初始化的样子

还行。不过显示input栏后,两者明显贴在一起了,如图二:


java 页面显示NaN java界面显示不全_java 页面显示NaN_02

图二:表格和input贴在一起了


给我们的table最顶端加上mt-2间距吧:


<


好了,显示的准备工作差不多。下一步之前,先说明一下上面的tbody下方的几个<tr>、<td>元素,这些只是先放着:笔者的习惯先看一下大致将来的结构是什么样,因为这个地方是实际的表格内容部分的每一行(tr就是table row的意思)的数据。这个数据我们会在页面打开的时候,通过像服务器发送ajax请求得到数据,动态填入每一行。所以,最后这个<tbody>里面其实初始化应该是空的。

马上来看这一段当页面加载完成后发起的ajax应该是什么样的。

页面加载后发起ajax,得到表格数据

打开catalog.js,在后面添加以下内容:


function


方法getCatalogData只是通过ajax调用,期望服务器的/api/getcatalog能返回所有的catalog的信息(现在还未实现),因为不需要带上客户端的什么信息,所以data是空的。success回调部分,我们暂时空着,这里要做的事情是把数据组织成html的<tr>,也就是上面说的每一行显示的格式,等会再实现。

$(document).ready()这个东西,是jquery的一个机制,这个机制能保证页面的元素都已经可供访问,在这个回调里面,我们才真正调用刚写的getCatalogData(),因为这里面会操作到页面元素:访问<tbody>,在下面插入<tr>。

还没有从服务器上读取过一堆数据,所以现在真不知道怎么填充success后的代码,那么我们就先看服务器怎么处理需要的逻辑先。

服务器支撑api/getcatalog

1、实现ServiceImpl中的read方法

打开CatalogServiceImpl.java,我们把read方法整体改成如下:


@Override


读取所有的记录就是这么简单,一个findAll()方法就搞定。

2、实现api本身

打开CatalogApi.java,给原先的类加入下面的方法:


@PostMapping


也很简单,直接调用Service中的read,得到一个列表,把列表塞入响应数据的body中即可。

没想到如此简单,似乎服务器要做的事情就这么搞定?来吧,试试看浏览器能接收到的数据是什么?

在上面的js文件中,我们给getCatalogData方法中success回调,塞入下面一行内容:


console


运行起来,看看能得到什么(如果你的数据库中还没有任何数据,事先加点进去)。我运行的结果如图三:


java 页面显示NaN java界面显示不全_服务器_03

图三:打印服务器上拿到的数据

看的出,得到的数据是一个json格式的数组。数组每一项都是一个类似java中的Catalog数据类型的结构。所以我们知道怎么在javascript用这些数据了。

完善getCatalogData方法

再回到catalog.js中,在getCatalogData的success回调下,我们写入以下内容:


success


然后就可以运行看效果了。如图四:


java 页面显示NaN java界面显示不全_java 页面显示NaN_04

图四:显示出了数据库中的栏目

哈,真好。不过表格第一行因为是原先我们的空数据行,所以要去掉它。这里就不贴代码了,直接删去原来的<tr>元素和它下面的所有<td>元素就可以。

先这样吧,要做的事情还很多,比如加了新的栏目后,表格应该要更新。这些就到后面再做。

休息~