[英]Error passing ArrayList from Servlet to JSP
我有一个重要的问题,但对我的英语很抱歉,我只知道基本的。 好吧,我的问题是我有一个错误将一个ArrayList从servlet传递到jsp页面:
<% ArrayList<Usuario> u= (ArrayList<Usuario>)session.getAttribute("listado");%>
<table align="left" cellpadding="0" cellspacing="1">
<tr bgcolor="blue">
<td>Usuario</td><td>Nombre</td>
<td>Apellido</td><td>Clave</td>
</tr>
<% for(int i=0;i<u.size();i++){ %>
<% Usuario usuario = u.get(i); %>
<tr>
<td> <%= usuario.getUsuario() %></td>
<td> <%= usuario.getNombre() %></td>
<td> <%= usuario.getApellido() %></td>
<td> <%= usuario.getClave() %></td>
</tr>
<%} %>
</table>
这就是我这样做但我收到的错误:
<% for(int i=0;i<u.size();i++){ %>
我做错了什么? 我的servlet方法也是这样的:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RequestDispatcher rd;
try {
Connection cn = MySQLConnection.obtenerConexion();
String sql = "select * from tb_usuario";
PreparedStatement ps = cn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
ArrayList<Usuario> listado = new ArrayList<Usuario>();
while (rs.next()){
Usuario usu = new Usuario(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4));
listado.add(usu);
}
request.setAttribute("listado", listado);
request.getRequestDispatcher("/listado.jsp");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我希望你能帮助我!
您不应该在JSP中使用scriptlet。 您应该在JSP中使用EL和标记。
例如
${listado}
您正在从session
检索时在request
对象中设置变量,这不存在因此问题。
您正在doPost
中设置属性,如下所示:
request.setAttribute("listado", listado);
您正在检索JSP中的属性,如下所示:
<% ArrayList<Usuario> u= (ArrayList<Usuario>)session.getAttribute("listado");%>
请在两个地方使用相同的范围session
或request
。
您正在设置值以请求范围
request.setAttribute("listado", listado);
但后来尝试在会话范围内访问它。
session.getAttribute("listado");
由于这个原因,你可能会得到一个空指针异常
u.size()...
尝试在请求范围内访问它
request.getAttribute("xxxxxx")
尽量避免在JSP中添加java代码whihc是一种不好的做法。 请改用EL和JSTL。 你也可以到代码里面的铸造部分..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.