Foros del Web » Programación para mayores de 30 ;) » Java »

Pasar Variable ??

Estas en el tema de Pasar Variable ?? en el foro de Java en Foros del Web. Levo poco tiempo en Java y entiendo el uso de los GETTERS y SETTERS, pero aqui quede plop, no entiendo como hacerlo, gracias por su ...
  #1 (permalink)  
Antiguo 27/02/2014, 08:05
 
Fecha de Ingreso: noviembre-2013
Mensajes: 147
Antigüedad: 10 años, 5 meses
Puntos: 1
Pasar Variable ??

Levo poco tiempo en Java y entiendo el uso de los GETTERS y SETTERS, pero aqui quede plop, no entiendo como hacerlo, gracias por su atencion.

Tengo un XHTML que presenta estos dos combos :

<h:form>
opciones: <h:selectOneMenu value="#{formbean1.optionActual}" >
<f:selectItems value="#{formbean1.opciones}"/>
<f:ajax render= "opcion" />
</h:selectOneMenu>
<h:selectOneMenu value="#{formbeanA.optionActual2}" >
<f:selectItems value="#{formbeanA.opciones2}"/>
<f:ajax render= "opcion2" />
</h:selectOneMenu>
<br/>
<h:commandButton value="mostrar contenido"/><br/>
Opcion Actual : <h:outputText id="opcion" value="#{formbean1.optionActual}"/>
Opcion Actual 2: <h:outputText id="opcion2" value="#{formbeanA.optionActual2}"/>

en la clase FORMBEAN1 tengo esto:

public class formbean {
private SelectItem[] opciones = new SelectItem[]{
new SelectItem("1","Automoviles"),
new SelectItem("23","Hogar"),
new SelectItem("34","Salud"),
new SelectItem("40","Vida"),
};

con getters y setters
y en la clase FORMBEAN2 tengo esto : (es un pedazo del codigo)

public class formbean2 {
private SelectItem[] opciones2 = new SelectItem[]{
/**
* si selecciono AUTOMOVILES en el combo1
*/
new SelectItem("AA","Gama Alta"),
new SelectItem("BB","Gama Media"),
new SelectItem("CC","Gama Baja"),

/**
* si selecciono HOGAR en el combo1
*/
new SelectItem("05","Estrato 5"),
new SelectItem("04","Estrato 4"),
new SelectItem("03","Estrato 3"),
new SelectItem("02","Estrato 2"),
new SelectItem("01","Estrato 1"),

Mi pregunta es como le paso la opcion que se utilizo en el combo 1 para determinar que valores desplegar en el combo 2?

No me ha funcionado con por ejemplo opciones opc = new opciones....

Gracias
  #2 (permalink)  
Antiguo 27/02/2014, 13:15
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Pasar Variable ??

Hola:

No puedes hacerlo en la parte XHTML/JSP ya que esa parte se ejecuta en el servidor y genera la página html que se envía al navegador. Cuando todo tu código JSP se haya ejecutado y enviado el HTML al navegador, es entonces cuando el usuario puede seleccionar la opción en el combo.

Para hacer lo que quieres, tienes que usar javascript, de forma que cuando el usuario elija algo en el combo1, se ejecute el código javascript en el navegador y modifique las opciones del combo2.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 02/03/2014, 20:04
 
Fecha de Ingreso: noviembre-2013
Mensajes: 147
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: Pasar Variable ??

Gracias por la ayuda, pero quede loco, necesito armar una Funcion, pero no se como enviar esa variable...ahi es donde estoy perdido.
  #4 (permalink)  
Antiguo 03/03/2014, 11:31
Avatar de josrv089  
Fecha de Ingreso: agosto-2013
Ubicación: Alajuela
Mensajes: 7
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Pasar Variable ??

Basicamente lo que tienes que hacer como dice chuidiang es usar Javascript.
Está bien que en primera instancia cargues la información del combo 1, ya que es lo que se le mostrará al usuario en primera instancia pero luego ya eso es puro codigo HTML que no tiene comunicación directa con el servidor, ahí es donde entra javascript.
En el primer combo debes una función como la onchange o onclick, para que cuando cambies el combo uno este llame a otra función de javascript.
Ahora, no se usar XHTML así que te lo pongo en HTML y tu lo adecuas:

<select id="combo1" type="text" onchange="metodoJavascriptCambiarCombo2();">
<option value='1'>" +opcion 1+ "</option>
<option value='2'>" +opcion 2+ "</option>
<option value='3'>" +opcion 3+ "</option>
<option value='4'>" +opcion 4+ "</option>
</select>


<select id="combo2" type="text" onchange="metodoJavascriptCambiarCombo2();">

</select>


Luego por otra parte tienes que usar un Javascript:

<script type="text/javascript">
function metodoJavascriptCambiarCombo2(){
// Aquí debes de consultar al servidor por medio de alguna forma por la información.
//Por ejemplo la forma que más me gusta es con jquery y utilizando los servlets pero eso depende de que tipo de proyecto estes manejando.
// Y con la información que te regrese del servidor debes de llenar el segundo combobox.

// Yo lo hago de esta forma pero no se si funcione en tu caso
var listBox = $("#combo2");
var items;
$.each(data, function(i, c) {
items += "<option value='" + c.id + "'>" + c.canton + "</option>";
});
listBox.html(items);


}
</script>



Se que suena un poco complicado pero con practica te será muy facil...
Y también es un poco describirlo bien, así que disculpas si no me supe expresar de forma adecuada.
  #5 (permalink)  
Antiguo 03/03/2014, 11:32
Avatar de josrv089  
Fecha de Ingreso: agosto-2013
Ubicación: Alajuela
Mensajes: 7
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Pasar Variable ??

Mi recomendación es que estudies un poco de javascript, ajax y las formas en que se pasa información de la pagina a el servidor que son los metodos GET y POST. Esto te aclarará un poco más el panorama...
  #6 (permalink)  
Antiguo 03/03/2014, 18:25
 
Fecha de Ingreso: noviembre-2013
Mensajes: 147
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: Pasar Variable ??

Gracias por el aporte JOSEV089, pero, en que parte de la funcion...por ejemplo la que posteaste, se puede validar si se tomo la opcion 1,2, etc...

he tratado con IF ( )...pero me genera error, como verifico cual fue la eleccion del primer combo?

Etiquetas: clase, html, valor, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:54.