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