Para evitar lo de los beans en el mostrado de datos quice utilizar un resultset q paso desde personaDAO
Código:
static public ResulSet listar_personas() throws Exception {
PreparedStatement ps = null;
ResultSet rs = null;
conexion db = new conexion();
Connection cnn = db.getConnection();
try {
String sql = "select * from personas";
ps = cnn.prepareStatement(sql);
rs = ps.executeQuery();
} finally {
if (cnn != null) {
cnn.close();
}
}
return rs;
}
y lo paso al jsp por el Action
Código:
ResultSet rs = personaDAO.listar_personas();
request.setAttribute("rsPersonas", rs);
return mapping.findForward("verPersonas");
y en el jsp no se como llenar la tabla con el ResulSet y el <logic:iterator>
pero al hacer la prueba con un text para ver si me devuelve datos el ResultSet
Código:
<%@ page import="java.sql.ResultSet" %>
...
Nombres: <input type="text" value='<%=((ResulSet) request.getAttribute("rsPersonas")).getString("nombres") %>'>
me sale un error sql q me dice "la conexion esta cerrada" ... viendo el codigo este error es obvio ya q antes de devolver el ResultSet cierro la conexion en el personaDAO
Entonces me pregunte si existe una forma de mantener el ResultSet estando cerrada la conexion y me encontre con com.sun.rowset.CachedRowSetImpl q es como una copia del ResulSet pero q permance activa a pesar de haber cerrado la conexion ...
modificando personaDAO
Código:
static public CachedRowSetImpl listar_personas() throws Exception {
PreparedStatement ps = null;
ResultSet rs = null;
conexion db = new conexion();
Connection cnn = db.getConnection();
CachedRowSetImpl c = new CachedRowSetImpl();
try {
String sql = "select * from personas";
ps = cnn.prepareStatement(sql);
rs = ps.executeQuery();
c.populate(rs);
} finally {
if (cnn != null) {
cnn.close();
}
}
return c;
}
el problema es q no se como acceder a los datos de cada columna q tiene el objeto y despues hacerlo trabajar con el <logic:iterator> en el jsp (lo mismo me sucede con el ResultSet q comente al inicio)
Existe alguna otra forma de poder capturar los datos, mantenerlos y mostrarlos??? sin necesidad de un ResulSet, CachedRowSetImpl o bean??? O se podra simplemente con estos...como???
gracias por todo de antemano