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

Reply via email to