将变量传递给JSP Java中的方法

时间:2014-05-28 13:34:27

标签: java jsp

我有一个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值来改变此值。请帮助。

1 个答案:

答案 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。