web-dev-qa-db-fra.com

Comment créer dynamiquement une ligne et une colonne de table dans une page jsp

J'essaie de récupérer des données de la base de données dans la table. Mais les données doivent être chargées dynamiquement.

Comment créer dynamiquement des lignes et des colonnes que je ne connais pas? Si ce ne sont que des lignes à créer, je le ferai facilement, mais je veux aussi créer une colonne de manière dynamique sur la page, c’est pourquoi je suis confus. le faire?

Mon code 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>

En ce moment, la première colonne est affichée dans <td>, mais si l'utilisateur ne sait pas combien de colonnes seront récupérées, que faire? Dans select query, j'ai utilisé *, donc je suis confus de prendre <td>. Je veux tout dynamique car supposons que je transmette aussi le nom de la table de manière dynamique en utilisant n'importe quelle zone de texte ou url.

Ici MySql1 est un fichier de classe qui a une méthode pour effectuer l'opération. connect() est utilisé pour se connecter à db, et getdata() est utilisé pour récupérer les données de la requête passée en argument et le type de retour de la méthode getdata() est Resultset.

C'est pourquoi je veux tout être dynamique, mais je ne sais pas comment faire ça.

5
Java Curious ღ

essayez ce code:

<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>
7
Gaurav Singla

J'ai fait la page JSP pour tester comme ça 

ici c'est 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>

vous pouvez changer le scriptlet en code qui parcourt le modèle que vous voulez afficher

j'espère que cela t'aides

0
Basheer AL-MOMANI