如何为 servlet 和对象数组设置数据表?

How to setup Datatables for a servlet and object array?

我有一个 servlet,它 returns 模型 bean 对象的集合到 jsp 页面。从那里我想显示该数据,但我不确定正确的方法。

从数据库返回的平均行数最多可能少于几百。

我正在使用 Java 1.6 和默认的 jQuery with Datatables 1.10.4.

我确实验证了数据在集合中,并且在对 JSP 页面的请求中发出。

最初,我根据数据tables 站点的 Javascript Sourced Data 对数据进行了硬编码,以确保正确设置了数据table,但现在我有实际数据,但不确定如何在 table 中正确获取它。

这是我在 Eclipse 中显示此错误的新 jQuery 代码:

 "ajax': './MyServlet", //invalid property assignment error?

我不确定这个错误是什么意思?

 <!-- jQuery code -->
     $(document).ready(function () {
            $('#datatable').dataTable({
                "processing": true,
                "ajax': './MyServlet", 
                "columns": [
                { "data": "Last Name" },
                { "data": "First Name" },
                { "data": "Mailing Address" },
                ...
            ]
            });
        }); 

这是我的 HTML 数据table 代码和 scriptlet,现在循环遍历我的对象集合并添加到 columns/rows。我在另一个例子中看到了这个,所以我只是试图让它工作。

<!-- The datatable in the jsp page -->
<table width="100%" id="datatable" class="display compact" cellspacing="0">
        <%
            if(null != modelBeanCollection  && modelBeanCollection.size() > 0) {
        %>

        <%
            List<modelBean> projectList = (List<modelBean>)(List<?>) modelBeanCollection;
            for (modelBean project : projectList) { 
        %>
        <tr>
            <td><%=project.getLastName()%></td>
            <td><%=project.getFirstName()%></td>
            <td><%=project.getAddress1()%></td>
            ...
        </tr>
            <%}
        }%>

</table>

我的主要问题是,在 jsp 页面中显示对象数组的最佳做法是什么?数据?

通过查看您的代码,您正在尝试使用 ajax 调用初始化数据表,同时使用来自 jsp scriptlet 的全部数据。

在你的情况下,我认为 ajax 部分是不需要的。这是我要做的;

<table id="example" class="display" cellspacing="0" width="100%">
    <thead>
        <tr>
            /* Column names goes here for header */
            <th>A</th>
            <th>B</th>
               ....
        </tr>
    </thead>

  <tbody>
     <%
        if(null != modelBeanCollection  && modelBeanCollection.size() > 0) {
    %>

    <%
        List<modelBean> projectList = (List<modelBean>)(List<?>) modelBeanCollection;
        for (modelBean project : projectList) { 
    %>
    <tr>
        <td><%=project.getLastName()%></td>
        <td><%=project.getFirstName()%></td>
        <td><%=project.getAddress1()%></td>
        ...
    </tr>
        <%}
    }%>
  </tbody>
</table>

并且在 $(document).ready 事件中只是一个像这样的简单初始化语句;

$('#example').dataTable( {
    "processing": true
} );

大功告成!

此外,我建议您将 EL 用于 JSP 页面,它可以让您省去很多麻烦,而且使用起来也更容易。上面的脚本可以这样写:

    <c:if test="{not empty modelBeanCollection}">
      <c:forEach items="${modelBeanCollection}" var="project">
        <tr>
              <td>${project.getLastName}></td>
              <td>${project.getFirstName}></td>
              <td>${project.getAddress1}</td>
              ...
          </tr>
      </c:forEach>
    </c:if>