Que tal amigos, adjunto algo que me llevo un tiempo realizarlo Listados desplegadles (o combos) dependientes.
La información original la tome de http://www.webintenta.com/combos-dependientes-ii.html realizados en PHP, pero que la adecue para jsp
En este caso, ocupe Ajax-jsp-oracle y lo realice en Netbeans.
Primero creamos una JSP llamada por ejemplo "calificadores.jsp" y copia este código:
Código:
<script type="text/javascript">
var peticion = false;
var testPasado = false;
try
{
peticion = new XMLHttpRequest();
}
catch (trymicrosoft)
{
try
{
peticion = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (othermicrosoft)
{
try
{
peticion = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (failed)
{
peticion = false;
}
}
}
if (!peticion)
alert("ERROR AL INICIALIZAR!");
function cargarCombo (url, comboAnterior, element_id)
{
//Obtenemos el contenido del div
//donde se cargaran los resultados
var element = document.getElementById(element_id);
//Obtenemos el valor seleccionado del combo anterior
var valordepende = document.getElementById(comboAnterior)
var x = valordepende.value
//construimos la url definitiva
//pasando como parametro el valor seleccionado
var fragment_url = url+'?id_calificador='+ x ;
element.innerHTML = '<img src="imagenes/loading.gif" />'; //opcional
//abrimos la url
peticion.open("GET", fragment_url);
peticion.onreadystatechange = function()
{
if (peticion.readyState == 4)
{
//escribimos la respuesta
element.innerHTML = peticion.responseText;
}
}
peticion.send(null);
}
</script>
<span class="Estilo5"><select name="calificador"
onchange="javascript:cargarCombo('subcalificador.jsp', 'calificador', 'div_subcalificador')" id="calificador">
</span>
<%
Connection conex = support.ini.Conexion.getConexion();
ResultSet rs = null;
Statement st = conex.createStatement();
try
{
String query =("select * from calificador order by id_calificador");
rs = st.executeQuery(query);
while (rs.next())
{
out.println("<option value='" + rs.getString("id_calificador") + "'>"+rs.getString("calificador")+"</option>");
}
}
catch (Exception e)
{
e.printStackTrace();
}
st.close();
rs.close();
%>
</select>
<div id="div_subcalificador">
Segundo, creamos una pagina llamada "subcalificador.jsp"...y bueno, copia el codigo.
Código:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import = "java.sql.Connection"%>
<%@page import = "java.sql.DriverManager"%>
<%@page import = "java.sql.ResultSet"%>
<%@page import = "java.sql.Statement"%>
<%@page import = "oracle.jdbc.driver.*"%>
<html>
<body>
<%
String id_calificador = request.getParameter("id_calificador").toString();
%>
<select name="subcalificador" id="subcalificador" class="select">
<%
Connection conex = support.ini.Conexion.getConexion();
ResultSet rs1 = null;
Statement st1 = conex.createStatement();
try
{
String query1 =("select * from subcalificador where fk_id_calificador = '" + id_calificador+ "' order by id_subcalificador");
rs1 = st1.executeQuery(query1);
while (rs1.next())
{
out.println("<option>"+rs1.getString("subcalificador")+"</option>");
}
}
catch (Exception e)
{
e.printStackTrace();
}
rs1.close();
st1.close();
support.ini.Conexion.CloseConnection(conex);
%>
</select>
</body>
</html>
Ademas adjunto la clase para la conexion para la base de datos
Código:
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import oracle.jdbc.driver.*;
public class Conexion
{
static Connection conex= null;
public static Connection getConexion()
{
try
{
String driverClassName="oracle.jdbc.driver.OracleDriver";
String driverUrl="jdbc:oracle:thin:@NOMBRE_DE_LA_BASE_DE_DATOS:PUERTO:INSTANCIA";
Class.forName(driverClassName);
conex = DriverManager.getConnection(driverUrl,"NOMBRE DE USUARIO DE LA BASE DE DATOS", "CONTRASEÑA");
System.out.println("conexion exitosa");
} catch(Exception e) {
System.out.print("no se logro conección");
e.printStackTrace();
}
return conex;
}
public static void CloseConnection(Connection con)
{
try {
con.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
Script de la base de datos...
Cita: CREATE TABLE calificador (
id_calificador NUMBER NOT NULL PRIMARY KEY,
calificador VARCHAR2(20) NULL,
fk_id_state NUMBER(1)
);
CREATE TABLE subcalificador (
id_subcalificador NUMBER NOT NULL PRIMARY KEY,
fk_id_calificador NUMBER NOT NULL REFERENCES calificador(id_calificador)
ON DELETE cascade,
subcalificador VARCHAR2(20) NULL,
fk_id_state NUMBER(1)
);
Que mas les puedo ofrecer???? espero que les sea de ayuda.