JSP中选择表单填充的问题

时间:2015-06-07 15:09:54

标签: java jsp servlets jstl

我想将List对象传递给html select。

问题是,没有任何内容附加到html选择。

这是一个Obiekt课程:

    package test;

public class Obiekt {

    private String nazwa;
    private String adres;
    private String dyscyplina;
    private int idObiekt;
    private int idTermin;
    public String getNazwa() {
        return nazwa;
    }
    public void setNazwa(String nazwa) {
        this.nazwa = nazwa;
    }
    public String getAdres() {
        return adres;
    }
    public void setAdres(String adres) {
        this.adres = adres;
    }
    public int getIdObiekt() {
        return idObiekt;
    }
    public void setIdObiekt(int idObiekt) {
        this.idObiekt = idObiekt;
    }
    public String getDyscyplina() {
        return dyscyplina;
    }
    public void setDyscyplina(String dyscyplina) {
        this.dyscyplina = dyscyplina;
    }
    public int getIdTermin() {
        return idTermin;
    }
    public void setIdTermin(int idTermin) {
        this.idTermin = idTermin;
    }
}

这是一个创建Obiekts列表的类:

package test;

import java.sql.*;
import java.util.ArrayList;

public class Wypelnij {

    Connection conn = null;
    public Wypelnij() throws ClassNotFoundException
    {

        PreparedStatement pst = null;  
        ResultSet rs = null;  

        String url = "jdbc:mysql://localhost:3306/";  
        String dbName = "zespolowy";  
        String driver = "com.mysql.jdbc.Driver";  
        String userName = "adminek";  
        String password = "123";  
        try {  
            Class.forName(driver).newInstance();  
            conn = DriverManager  
                    .getConnection(url + dbName, userName, password);
        } catch (Exception e) {  
            System.out.println(e);  
        } finally {  
            if (conn != null) {  
                try {  
                    conn.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }  
            }  

        } 
    }

    public ArrayList<Obiekt> getObiekty() throws SQLException
    {
        ArrayList<Obiekt> obiekty = new ArrayList<Obiekt>();
        Statement pst = null;  
        ResultSet rs = null;
        String query = "SELECT nazwa,adres,dyscyplina from obiekty;";
        pst = conn.createStatement();
        rs = pst.executeQuery(query);

        while(rs.next()){
            Obiekt obiekt = new Obiekt();
            obiekt.setNazwa(rs.getString("nazwa"));
            obiekt.setAdres(rs.getString("adres"));
            obiekt.setDyscyplina(rs.getString("dyscyplina"));
            obiekty.add(obiekt);
        }
        return obiekty;

    }

}

最后:

<select>
            <c:forEach items="${obiekty}" var="obiekt">
            <option value="1"><c:out value="${obiekt.nazwa}"/></option>
            </c:forEach>
</select>

就像我说的,选择从什么都不显示。哪里有问题? 我在jsp页面的顶部包含了taglib前缀子句。

2 个答案:

答案 0 :(得分:2)

你可以通过两种方式做到这一点:

1.在jsp中调用Java方法

<%
List<Obiekt> list = new Wypelnij().getObiekty();
%>
<select>
<%
for(Obiekt obiekt : list){
%>
<option value="1" ><%=obiekt.getNazwa()%><option/>
<% } %>
</select>

2.您也可以将列表从JSP传递给Servlet。使用JSTL,您可以显示

List<Obiekt> list = new Wypelnij().getObiekty();
request.setAttribute("obiekty",list);
RequestDispatcher requestDispatcher =
    request.getRequestDispatcher("YourJspUrlGoesHere");
requestDispatcher.forward(request, response);

以下代码必须位于JSP页面。

<select>
        <c:forEach items="${obiekty}" var="obiekt">
            <option value="1">${obiekt.nazwa}</option>
        </c:forEach>
</select>

我希望这会对你有所帮助。

答案 1 :(得分:0)

同时检查列表对象大小(从DB获取的记录)是否大于0.