I use my combo own classes that populate combos and set various properties.
With this properties setOnchange("buscarEstado()"); I'm setup which method
execute this combo when the onchange event occur.
This method (buscarEstado() = findStates()) submit the page and reload all
combos.
I wish that you can use this and understand me.
Jorge Middleton
MENDOZA - ARGENTINA
/************************************jsp example
*****************************************/
<%@page language="java" import="java.util.*, java.sql.*,
com.alterbrain.ar.*" errorPage="../errorPage.jsp"%>
<jsp:useBean id="usuario" scope="page" class="com.alterbrain.ar.Usuarios"/>
<jsp:useBean id="domicilio" scope="page"
class="com.alterbrain.ar.Domicilios"/>
<jsp:useBean id="o" scope="session" class="com.alterbrain.ar.ComboBean"/>
<jsp:useBean id="mensajeCol" scope="application"
class="com.alterbrain.ar.MensajesColeccion"/>
<%
javax.servlet.http.HttpSession sesion= request.getSession(false);
usuario.setSesion(sesion);
//PARA LA CARGA DE LOS COMBOS
Vector v= new Vector();
o.setSesion(sesion);
Integer iIdioma= Integer.decode((String)sesion.getValue("config.idioma"));
Mensaje mensaje= new Mensaje();
//llena los valores de los text con null por eso se verifica antes
String entrada= Conversor.HTMLEncode(request.getParameter("entrada"), "1");
String oper= Conversor.HTMLEncode(request.getParameter("operacion"),
"nulo");
String rAceptaTerminos= request.getParameter("aceptaTerminos")== null ||
!request.getParameter("aceptaTerminos").equals("1")?"":"checked";
usuario.setRecibeInfo(Conversor.HTMLEncode(request.getParameter("recibeInfo"
), "N"));
//datos del movimiento cuando se ingresa a esta pagina por un link de una
solicitud
//o envio de dinero
String rUid= Conversor.HTMLEncode(request.getParameter("uid"), "0");
String rMoviTipo= Conversor.HTMLEncode(request.getParameter("moviTipo"),
"0");
String rMoviNume= Conversor.HTMLEncode(request.getParameter("moviNume"),
"0");
int uid= Integer.parseInt(rUid);
int moviTipo= Integer.parseInt(rMoviTipo);
int moviNume= Integer.parseInt(rMoviNume);
%>
<html>
<head>
<script language="JavaScript" src="../js/rlov_prlo.js"></script>
<script language="JavaScript" src="../js/Mascara.js"></script>
</head>
<script language="JavaScript">
var glMarca= true; //variable global para evitar que se ejecute dos veces la
//funcion validarNroInt.
function validarNroInt(obj, mascara) {
var correcto= ValidoNumeInt(obj.value, mascara);
glMarca= true;
if (!correcto){
<%mensaje= mensajeCol.getMensaje(iIdioma, new Integer(20118));%>
alert("<%=mensaje.getMensaje()%>\n");
obj.value="";
obj.focus();
glMarca = false;
}
}
function Ventana(path){
window.open(path,"Ventana",
"height=450,width=450,left=300,top=50,scrollbars=yes,toolbar=no,status=no,me
nubar=no,location=no,resizable=no")
}
function Confirmar(){
if (glMarca && verificarDatos() && verificarPassword()){
if (document.forms[0].aceptaTerminos.checked== true){
document.forms[0].operacion.value="C_REGIS"; //confirmar
document.forms[0].domiTipo.value= "1";
document.forms[0].submit();
}else{
//no acept� las condiciones de TePago.com
<%mensaje= mensajeCol.getMensaje(iIdioma, new
Integer(20103));%>
alert("<%=mensaje.getMensaje()%>\n");
}
}
return;
}
function buscarEstado(){
document.forms[0].operacion.value="X";
document.forms[0].estado.selectedIndex= -1;
document.forms[0].action="Registracion.jsp";
document.forms[0].submit();
}
function buscarLocalidad(){
document.forms[0].operacion.value="X";
document.forms[0].localidad.selectedIndex= -1;
document.forms[0].action="Registracion.jsp";
document.forms[0].submit();
}
function verificarPassword(){
var mensaje = "";
if (mensaje == "") return true;
window.alert(mensaje);
return false;
}
</script>
<link rel="stylesheet" href="../estilos/general.css">
<body class="bkcolor" leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0">
<form id="form1" name="form1" method=POST>
<INPUT TYPE=HIDDEN NAME="operacion" value="X">
<INPUT TYPE=HIDDEN NAME="entrada" value="<%=entrada%>">
<INPUT TYPE=HIDDEN NAME="domiTipo" value="0">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="TituloCelda"><item
Id=pais>Pa�s</item>:</td>
<td>
<%v.removeAllElements();
o.abrirConexion();
o.setStore("PA_TEP_COMBOS_REG.PR_TEP_PAISES_CONSUL");
v.addElement(o.NULO_INTEGER);
v.addElement(iIdioma);
o.setParam(v);
o.setName("pais");
o.setColumnaCodigo(1);
o.setColumnaDescrip(2);
o.setInicial("Seleccione un Pais");
o.setClase("Combo");
o.setWidth("133");
o.setOnchange("buscarEstado()");
o.setSelected(request.getParameter("pais"));
o.setErrorCode(20528);
out.print(o.getHTMLCombo());
o.desconectar();%>
</td>
<td class="TituloCelda"><item
Id=provinesta>Provin/Estado</item>:</td>
<td>
<%v.removeAllElements();
o.abrirConexion();
o.setStore("PA_TEP_COMBOS_REG.PR_TEP_ESTADOS_CONSUL");
if (request.getParameter("pais")==
null)
v.addElement(o.NULO_INTEGER);
else
v.addElement(new
Integer(request.getParameter("pais")));
v.addElement(o.NULO_INTEGER);
o.setParam(v);
o.setName("estado");
o.setColumnaCodigo(2);
o.setColumnaDescrip(3);
o.setInicial("Seleccione una
Provincia");
o.setOnchange("buscarLocalidad()");
o.setClase("Combo");
o.setWidth("133");
o.setSelected(request.getParameter("estado"));
o.setErrorCode(20529);
out.print(o.getHTMLCombo());
o.desconectar();%>
</td>
</tr>
<tr>
<td class="TituloCelda"><item
Id=locaciudad>Localidad/Ciudad</item>:</td>
<td>
<%v.removeAllElements();
o.abrirConexion();
o.setStore("PA_TEP_COMBOS_REG.PR_TEP_CIUDADES_CONSUL");
if (request.getParameter("pais")==
null)
v.addElement(o.NULO_INTEGER);
else v.addElement(new
Integer(request.getParameter("pais")));
if
(request.getParameter("estado")== null)
v.addElement(o.NULO_INTEGER);
else v.addElement(new
Integer(request.getParameter("estado")));
v.addElement(o.NULO_INTEGER);
o.setParam(v);
o.setName("localidad");
o.setColumnaCodigo(3);
o.setColumnaDescrip(4);
o.setInicial("Seleccione una
Localidad");
o.setClase("Combo");
o.setWidth("133");
o.setSelected(request.getParameter("localidad"));
o.setErrorCode(20530);
out.print(o.getHTMLCombo());
o.desconectar();%>
/************************************** beans
******************************************/
package com.alterbrain.ar;
import javax.servlet.http.HttpSession;
import java.sql.*;
import java.util.*;
public final class ComboBean implements java.io.Serializable{
private HttpSession sesion;
private Connection orden = null;
private ResultSet rs = null;
private java.util.Vector param;
public static String NULO_DATE = "3n";
public static String NULO_DOUBLE = "4n";
public static String NULO_INTEGER = "1n";
public static String NULO_VARCHAR = "2n";
/** marca el item seleccionado */
private String indice = "";
/** store para cargar el combo. */
private String store = "";
/** nombre del combo. */
private String name = "";
/** texto por defecto. */
private String inicial = "";
/** clave seleccionada. */
private String selected = "";
/** estado del combo: disabled o no. */
private String estado = "";
/** combo con selecci�n multiple. */
private String multiple = "";
/** ancho del combo. */
private String width;
/** alto del combo. */
private String height;
/** m�todo a ejecutarse cuando se active el evento onChange. */
private String onchange = "";
/** clase de estilo del combo. */
private String clase = "";
/** indica el nro de columna para mostrar en el combo que viene
desde el store */
private int columnaDescrip= 2;
/** indica el nro de columna para el c�digo del combo */
private int columnaCodigo= 1;
/** codigo de error perteneciente al combo que se est� creando */
private int errorCode= 20600;
/** Creates new ComboBean */
public ComboBean() {
this.param= new Vector();
}
public void setStore(String store) {
this.store = store;
this.indice = "";
this.name = "";
this.inicial = "";
this.selected = "";
this.estado = "";
this.multiple = "";
this.width= "";
this.height= "";
this.onchange = "";
this.clase = "";
this.columnaDescrip = 0;
}
public void setSesion(HttpSession sesion){
this.sesion = sesion;
}
public void setName(String name) {
this.name = name;
}
public void setInicial(String inicial) {
this.inicial = inicial;
}
public void setSelected(String selected) {
this.selected = selected;
}
public void setEstado(String estado) {
this.estado = estado;
}
public void setMultiple(String multiple) {
this.multiple = multiple;
}
public void setWidth(String width) {
this.width = width;
}
public void setHeight(String height) {
this.height = height;
}
public void setOnchange(String onchange) {
this.onchange = onchange;
}
public void setClase(String clase) {
this.clase = clase;
}
public void getConexion(Connection conn) {
this.orden = conn;
}
public void desconectar() {
try {
orden.close();
} catch (SQLException e) {
System.out.println("Error: " + e.toString());
}
}
/* establece la conexion para utilizar en los m�todos internos */
public void abrirConexion(){
try{
orden= Conexion.establecer(
(String)sesion.getValue("config.usuarioOracle"),
(String)sesion.getValue("config.pwdUsuarioOracle"));
}catch(Exception e){
orden= null;
System.out.println("Error intentando la conexion: " +
e.toString());
}
}
public String getHTMLCombo() throws Exception {
StringBuffer HTMLCombo = new StringBuffer();
String tamanio = "";
if (getWidth() != null && getHeight() != null) {
tamanio =
"style=\"HEIGHT: "
+ getHeight()
+ "px; WIDTH: "
+ getWidth()
+ "px\""
+ " WIDTH= \""
+ getWidth()
+ "\" HEIGHT= \""
+ getHeight()
+ "\"";
} else {
if (getWidth() != null && getHeight() == null) {
tamanio =
"style=\"WIDTH: " + getWidth() + "px\"" + " WIDTH= \"" +
getWidth() + "\"";
} else {
tamanio =
"style=\"HEIGHT: " + getHeight() + "px\"" + " HEIGHT= \"" +
getHeight() + "\"";
}
}
HTMLCombo.append(
"<SELECT id=\"" + getName() + "\" name=\"" + getName() + "\" ");
HTMLCombo.append(getEstado() + " ");
HTMLCombo.append(getMultiple() + " ");
HTMLCombo.append(tamanio + " ");
HTMLCombo.append("Class=\"" + getClase() + "\" ");
HTMLCombo.append("onChange=\"" + getOnchange() + "\"> \n");
HTMLCombo.append("<OPTION value=\"-1\">" + getInicial() +
"</OPTION>\n");
try {
Statement stmt = orden.createStatement();
ResultSet rs = this.ejecutar(store, this.param);
while (rs.next()) {
indice = rs.getString(this.getColumnaCodigo()).trim();
if (indice.equalsIgnoreCase(selected)) {
HTMLCombo.append(
"<OPTION SELECTED value=\""
+ indice
+ "\">"
+ rs.getString(this.getColumnaDescrip()).trim()
+ "</OPTION>\n");
} else {
HTMLCombo.append(
"<OPTION value=\""
+ indice
+ "\">"
+ rs.getString(this.getColumnaDescrip()).trim()
+ "</OPTION>\n");
}
}
rs.close();
} catch (Exception e) {
System.out.println("Error creacion combo: " + e.toString());
throw new SQLException("", "", this.getErrorCode());
}
HTMLCombo.append("</SELECT>");
return HTMLCombo.toString();
}
private ResultSet ejecutar(String storeName, Vector parameter) throws
SQLException {
StringBuffer s = new StringBuffer(4096);
ResultSet res = null;
s.append("{call ");
s.append(storeName);
if (parameter.size() > 0) {
s.append(" (");
for (int i = 1; i < parameter.size(); i++) {
s.append("?,");
}
s.append("?,?)}");
CallableStatement cstmt = orden.prepareCall(s.toString());
cstmt.clearParameters();
int j = 0;
for (Enumeration enum = parameter.elements();
enum.hasMoreElements();) {
j++;
Object obj = enum.nextElement();
String str = obj.getClass().getName();
if (obj == this.NULO_INTEGER) {
cstmt.setNull(j,
oracle.jdbc.driver.OracleTypes.INTEGER);
} else {
if (obj == this.NULO_VARCHAR) {
cstmt.setNull(j,
oracle.jdbc.driver.OracleTypes.VARCHAR);
} else {
if (obj == this.NULO_DOUBLE) {
cstmt.setNull(j,
oracle.jdbc.driver.OracleTypes.DOUBLE);
} else {
if (obj == this.NULO_DATE) {
cstmt.setNull(j,
oracle.jdbc.driver.OracleTypes.DATE);
} else {
if
(str.equalsIgnoreCase("java.lang.Integer")) {
Integer ii = (Integer) obj;
cstmt.setInt(j, ii.intValue());
} else {
if
(str.equalsIgnoreCase("java.lang.String")) {
cstmt.setString(j, (String) obj);
} else {
if
(str.equalsIgnoreCase("java.lang.Double")) {
Double dd = (Double) obj;
cstmt.setDouble(j,
dd.doubleValue());
} else {
if
(str.equalsIgnoreCase("java.lang.Boolean")) {
Boolean bb = (Boolean) obj;
cstmt.setBoolean(j,
bb.booleanValue());
} else {
/* if
(str.equalsIgnoreCase("java.lang.Date")){
Date da= (Date)obj;
cstmt.setDate(j,
da);
}*/
}
}
}
}
}
}
}
}
}
cstmt.registerOutParameter(j + 1,
oracle.jdbc.driver.OracleTypes.CURSOR);
cstmt.execute();
res = (ResultSet) cstmt.getObject(j + 1);
} else {
s.append("(?)}");
CallableStatement cstmt = orden.prepareCall(s.toString());
cstmt.clearParameters();
cstmt.registerOutParameter(1,
oracle.jdbc.driver.OracleTypes.CURSOR);
cstmt.execute();
res = (ResultSet) cstmt.getObject(1);
}
return res;
}
/**
* Insert the method's description here.
* Creation date: (12/19/00 7:31:34 PM)
* @param newParam java.util.Vector
*/
public void setParam(java.util.Vector newParam) {
param = newParam;
}
/**
* Insert the method's description here.
* Creation date: (12/19/00 8:33:51 PM)
* @param newColumnaDescrip int
*/
public void setColumnaDescrip(int newColumnaDescrip) {
columnaDescrip = newColumnaDescrip;
}
public void setColumnaCodigo(int newColumnaCodigo) {
columnaCodigo = newColumnaCodigo;
}
public java.util.Vector getParam() {
return param;
}
public int getColumnaDescrip() {
return columnaDescrip;
}
public int getColumnaCodigo() {
return columnaCodigo;
}
public String getStore() {
return store;
}
public String getName() {
return name;
}
public String getInicial() {
return inicial;
}
public String getSelected() {
return selected;
}
public String getEstado() {
return estado;
}
public String getMultiple() {
return multiple;
}
public String getWidth() {
return width;
}
public String getHeight() {
return height;
}
public String getOnchange() {
return onchange;
}
public String getClase() {
return clase;
}
public void setErrorCode(int er) {
this.errorCode= er;
}
public int getErrorCode() {
return this.errorCode;
}
}
/***************************************************************************
***********/
-----Original Message-----
From: Dan Lopez [mailto:[EMAIL PROTECTED]]
Sent: Monday, April 16, 2001 3:34 PM
To: [EMAIL PROTECTED]
Subject: Combo Box problem
I have two combo boxes that I would like to populate
from my database (for states and countries). What
method(s) do I use to do this using JDBC and combo
boxes?
Need help ASAP!
Thanks All.
__________________________________________________
Do You Yahoo!?
Get email at your own domain with Yahoo! Mail.
http://personal.mail.yahoo.com/
===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff
JSP-INTEREST".
For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST
DIGEST".
Some relevant FAQs on JSP/Servlets can be found at:
http://java.sun.com/products/jsp/faq.html
http://www.esperanto.org.nz/jsp/jspfaq.html
http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets
===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST DIGEST".
Some relevant FAQs on JSP/Servlets can be found at:
http://java.sun.com/products/jsp/faq.html
http://www.esperanto.org.nz/jsp/jspfaq.html
http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets