我有一个Vector方法,它将数据库中的值返回给JSP组合框。该方法有一个输入变量字符串,存储在会话中。我需要将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>
我没有在我的选择列表中获取任何内容但是当我直接传递值时,我得到了正确的输出。我需要根据会话中的campus_code值来改变此值。请帮助。
答案 0 :(得分:1)
您可以在DAO中使用class属性和set_code,而不是EL调用obj.getHostel(campus)
。
然后,您可以在useBean标记之后使用<c:set target="${obj}" property="campusCode">
设置值。然后,您只需将DAO方法getHostel(校园)更改为可以使用getHostels()
访问的简单getter ${obj.hostels}
。
可以使用隐式会话对象${session}
在JSTL中访问会话,这样您就可以执行${session.campus_code}
或${session["campus_code"]}
而不是使用scriptlet。