我有一个 vector 方法,它将值从数据库返回到 JSP 组合框。该方法有一个存储在 session 中的输入变量字符串。我需要将 session 中的值传递到 JSP 中的方法调用,但我没有从数据库中获取值。这是我的方法:
public Vector getHostel(String campus) throws IOException{
Vector v = new Vector();
Connection conn;
try{
conn = db.getDbConnection();
String sql = "select * from hostel_master where campus_code = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, campus);
ResultSet rs = ps.executeQuery();
while(rs.next()){
String host = rs.getString(1);
v.add(host)
}
}catch(Exception asd){
System.out.println(asd.getMessage());
}
return v;
}
和我的 JSP 文件摘录:
<jsp:useBean id = "obj" class="com.app.dao.HostelsDao" scope = "page"/>
<% String campus = (String)session.getAttribute("campus_code");%> <%-- I really hate this --%>
<option selected value = "SELECT">SELECT</option>
<c:forEach var = "item" items = "${obj.getHostel(campus)}">
<option>${item}</option>
</c:forEach>
我的选择列表中没有得到任何内容,但是当我直接传递值时,我得到了正确的输出。我需要该值根据 session 中的 Campus_code 值而变化。请帮忙。
最佳答案
而不是 EL 调用 obj.getHostel(campus)
,在您的 DAO 中,您可以拥有 Campus_code 的类属性和 setter 。
然后您可以使用 <c:set target="${obj}" property="campusCode">
设置该值在 useBean 标签之后。然后,您只需将 DAO 方法 getHostel(campus) 更改为简单的 getter getHostels()
可以通过 ${obj.hostels}
访问。
可以使用隐式 session 对象在 JSTL 中访问 session :${session}
所以你应该能够做 ${session.campus_code}
或${session["campus_code"]}
而不是使用 scriptlet。
关于java - 将变量传递给 JSP Java 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23913144/