Buenas:
A ver si te puedo echar una mano. El problema reside en dos puntos que tendrás que cambiar, según lo veo.
- En la función ListarProcedencia, obtienes un único elemento de los resultados devueltos de la BD, que es el que envías (de ahi que solo veas un elemento en el combo). Así, tendrías que recuperar todas las nacionalidades y que la función te devuelva una lista con esas nacionalidades.
- En el JSP, solo imprimes un único elemento. Ahora tendrías que recuperar la lista antes de introducir el elemento e iterar sobre ésta, introduciendo un option por cada elemento de la lista (otra opcion es emplear un tag que te genere todos los option a partir de una lista, vease options)
O lo que es lo mismo:
Código:
public List<Nacionalidad> Listarprocedencia(Nacionalidad nacionalidad) {
PreparedStatement instruccion=null;
ResultSet resultado=null;
List<Nacionalidad> nacionalidades = new ArrayList<Nacionalidad>();
conectarbd();
try{
String sSql = "";
sSql = sSql + "select id_nacionalidad, Nombre from prueba_invesa.nacionalidad";
instruccion = canal.prepareStatement(sSql);
resultado=instruccion.executeQuery();
while (resultado.next()) {
nacionalidad = new Nacionalidad();
nacionalidad.setId_nacionalidad(resultado.getString(1));
nacionalidad.setNOmbre(resultado.getString(2));
nacionalidades.add(nacionalidad);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
if (resultado != null) resultado.close();
if (instruccion != null) instruccion.close();
} catch (SQLException ex) {
}
}
return nacionalidades;
}
Y en el caso del JSP:
Código:
<%
List<Nacionalidad> nacionalidades = ListarProcedencia();
%>
<select name="NACIONALIDAD" id="NACIONALIDAD">
<option>Seleccione nacionalidad</option>
<% for (Nacionalidad nacionalidad : nacionalidades) { %>
<option value="<%=nacionalidad.getId_nacionalidad() %>"><%=nacionalidad.getNOmbre() %></option>
<% } %>
</select>
Espero que te sirva de ayuda (y que esté correcto ;))
Saludos.