jsp页面中如何动态创建表格的行列

Posted

技术标签:

【中文标题】jsp页面中如何动态创建表格的行列【英文标题】:How to dynamically create row and column of table in jsp page 【发布时间】:2013-10-04 16:58:54 【问题描述】:

我正在尝试将数据从数据库检索到表中。 但数据必须动态加载。

如何动态创建我不知道的行和列? 如果它只是要创建的行,那么我会很容易地做到这一点,但我也想在页面上动态创建列,这就是为什么我很困惑如何执行它?

我的 JSP 代码:

<table  border="1">
    <%
        mysql1 o = new MySql1();
        o.connect();
        ResultSet r;
        int counter=1;
        String q = "select * from category_master;";
        r = o.getdata(q);
        while(r.next())
        
            %>
                <tr>
                     <td><%= r.getString(1)%></td>                                      
                </tr>
            <% 
        
    %>
</table>

现在我在&lt;td&gt; 中显示第一列,但如果用户不知道要检索多少列,那该怎么办? 在select query 中,我使用了*,所以我对使用&lt;td&gt; 感到困惑。 我想要全部动态,因为假设我也将使用任何文本框或 url 动态传递表名。

这里MySql1 是一个类文件,它具有执行操作的方法。 connect()用于连接db,getdata()用于检索作为参数传递的查询数据,getdata()方法的返回类型为Resultset

所以这就是我想要所有动态的原因,但我不知道该怎么做。

【问题讨论】:

【参考方案1】:

试试这个代码:

<table  border="1">
    <%
        MySql1 o = new MySql1();
        o.connect();
        ResultSet r;
        int counter=1;
        String q = "select * from category_master;";
        r = o.getdata(q);
        ResultSetMetaData metaData = r.getMetaData();
        while(r.next())
        
            %>
                <tr>
                 <%
                 for(int i = 1; i<=metaData.getColumnCount();i++)
                     %>
                     <td>
                     <%= r.getString(i)%>
                     </td>
                <% 
                    
                %>                   
                </tr>
            <% 
        
    %>
</table>

【讨论】:

先生,如果我将编写查询以使用 select * 获取所有数据但我不想要一个字段,是否有可能。这种事情可能与否?假设它是用户详细信息表,我不想显示密码,除非我想要所有数据。 看这个问题:***.com/questions/14253994/… 先生,我没有完全理解它的含义,我是这个领域的初学者,所以这就是我面临问题的原因。你能告诉我怎么做吗? 先生,我已经实现了 2 个机制。首先我从表中获取列名并显示为标题,然后在第二个中我从表名中获取数据但它在第二个实现中显示 ResultSetMetaData 声明中的错误,如果我直接传递表名而不是从其他页面获取的变量然后它在 ResultSetMetaData delaration 中显示错误... 我已经用代码先生发布了我的问题。***.com/questions/19095898/…【参考方案2】:

我做了jsp页面这样测试

这里是test.jsp

<table  border="1">
    <thead>
    <tr>
        <td>Volume</td>
        <td>XmlTitle</td>
        <td>getYear</td>
    </tr>
    </thead>
    <tbody>
    <%
        Journal journal = Journal.findByCode("antipoda");
        List<Issue> normalIssues = journal.getIssuesOfType(IssueType.NORMAL);
        for (Issue issue : normalIssues) 

            out.print(String.format("<tr>" +
                                        "<td>%s</td>" +
                                        "<td>%s</td>" +
                                        "<td>%d</td>" +
                                    "</tr>",
                    issue.getVolume(),issue.getXmlTitle(),issue.getYear()));
        

        out.flush();
    %>
    </tbody>
</table>

您可以将 scriptlet 更改为通过您要显示的模型进行迭代的代码

希望对你有帮助

【讨论】:

以上是关于jsp页面中如何动态创建表格的行列的主要内容,如果未能解决你的问题,请参考以下文章

在jsp页面动态添加数据库中的内容

如何利用AngularJS动态创建表格和动态赋值

如何在JSP网页中生成动态图表

Jsp动态生成表格

JSP 定义行列数表单创建表格

刚新建好的动态网站项目,创建jsp页面就报错