【问题标题】:Problems with select form population in JSPJSP中选择表单填充的问题
【发布时间】:2015-06-07 15:09:54
【问题描述】:

我想将 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 前缀子句。

【问题讨论】:

  • 如何将obiekty 传递给jsp?
  • 我必须这样做吗?
  • 当然你必须把List传给jsp或者在这个jsp里面你必须得到这个List
  • 现在我将在jsp中添加jstl和java代码作为答案

标签: java jsp servlets jstl


【解决方案1】:

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

1.jsp内部调用Java方法

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

2.您也可以将列表从Servlet 传递给JSP。使用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>

希望对你有帮助。

【讨论】:

  • 这两种方式都不起作用。正如你提到的第二种方式,我必须把它放在 doGet 或 doPost 函数中吗?
  • 我第二种方式你可以通过你从jsp调用的方式。但第一种方式也必须工作。有什么问题?你检查数据库了吗?可能是数据库中没有数据
  • 这两种方式都必须有效。但我不知道是什么问题:) 有什么可以帮助你的吗?
  • 是否有可能从此选择菜单中记住所选项目的 obiekt.id ?我在问,因为在下一步我想为我选择的这个 Obiekt 预订。
  • 是的,您可以在会话中存储 id。并选择为已选择的设置选择的选项。这将帮助您stackoverflow.com/questions/15657367/…
【解决方案2】:

还要检查您的列表对象大小(从数据库中获取的记录)是否大于 0。

【讨论】:

    猜你喜欢
    • 2010-12-02
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多