web-dev-qa-db-ja.com

jspページでテーブルの行と列を動的に作成する方法

データベースからテーブルにデータを取得しようとしています。ただし、データは動的にロードする必要があります。

わからない行と列を動的に作成する方法は?作成するのが行だけの場合は簡単に作成できますが、ページ上で動的に列を作成したいので、実行方法がわかりません。

私のJSPコード:

_<table width="59%" 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>
_

現在、_<td>_の最初の列を表示していますが、ユーザーが取得する列の数がわからない場合はどうすればよいですか? _select query_では、私は_*_を使用したので、_<td>_を取得することに混乱しています。テキストボックスまたはURLを使用してテーブル名も動的に渡すと仮定するため、すべて動的にしたい。

ここで、MySql1は、操作を実行するメソッドを持つ1つのクラスファイルです。 connect()はdbとの接続に使用され、getdata()は引数として渡されたクエリのデータを取得するために使用され、getdata()の戻り値の型はResultsetです。

だから私はすべてダイナミックにしたいのですが、それを行う方法がわかりません。

5

このコードを試してください:

<table width="59%" 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>
8
Gaurav Singla

私はこのようなテストのためにjspページをしました

ここにあります test.jsp

<table width="59%" 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>

スクリプトレットを、表示するモデルを反復処理するコードに変更できます

お役に立てれば

0