Java Servlet & Javascript

TheBis

Estoy haciendo una página dinámica en Java y tengo un form que contiene 2 combobox. Al modificar el valor del 1º se debe ejecutar una consulta a base de datos y modificar los valores en el 2º combobox.
Sé que tiene que ser con Javascript y Servlets pero no se cómo implementarlo.

una ayudita plis?

Buffoncete

obligado a hacer la consulta con servlets ?

NeB1

te lo digo en jquery porque ahora mismo no me apetece escribirte la función ajax.

$("#idSelect1").change(function(){
    data = new Object();
    data['valorSelect1'] = $(this).val();
    $.post('archivoQueHaceLaConsulta.jsp',data,function(response){
        $("#idSelect2").html(response);
    });
});

Esto sería la función javascript que haría la llamada a un archivo, el cual le devolvería algo así

<option value="valor1">option1</option><option value="valor2">option2</option>....

Pero para poder gastar esa función javascript tienes que bajarte jquery de su web www.jquery.com y añadirlo en la cabecera de tu web

<script type="text/javascript" src="./js/jquery-1.4.2.min.js"></script>

PD: La parte de servlets y todo eso no tengo ni puta idea sorry, solo he tocado php y algo de asp.

Buffoncete

yo en servlets le puedo ayudar, pero paso de ponerle toda la info si no es una obligación y con php es mucho más rápido y sencillo xD

así que responda si está obligado a usar servlets :)

TheBis

No es obligatorio usar Servlets.
El PHP esta prohibidisimo (el server no lo soporta)

#3 Voy a ver si me vale, ahora comento

TheBis

Ya funciona _
He acabado leyéndome la documentación de jquery sobre Ajax y he logrado que funcione; no como quería porque no ha habido huevos a que el javascript entienda el array que le pasaba desde java pero me las apañé para pasar un String y separarlo :D

Ahora a rezar para que los de la empresa no pongan 10mil millones de registros... Creo que añadiré un iconito gif de carga por si acaso.

NeB1

lo normal es justo antes de la instrucción

$.post (o $.ajax o $.get o la que gastes para hacer la llamada)

pones algo así

$('body').append('<div id="overlay" style="position:absolute;top:0px; left:0px;height:100%;width:100%;-moz-opacity:0.6;opacity:0.6;filter: alpha(opacity=50);background-color:#000;"><img src="./img/loading.gif" /></div>');

o sea, creas una especie de cortina transparente grisacea por encima de la web justo antes de realizar la llamada, que lleve el gif dentro, y entonces en el callback de la función ajax

$.post(archivo,data, function(respuesta){
$("#overlay").remove();
});

Es decir, te cargas esa 'cortina', así durante el rato que tarda la llamada, se vé el gif, y después se lo carga

Por cierto, esta xorrada la suelo usar bastante :P

http://ajaxload.info/

Shendraf

Utiliza DWR, es un AJAX para Java. Lo que consigue es que genera código javascript basado en clases Java que tú definas. Estoy seguro que es lo que necesitas.

http://en.wikipedia.org/wiki/DWR_%28Java%29

TheBis

#7 not bad, pensaba usar el Lightbox que ya he usado anteriormente para hacer galerías y formularios de sesión

#8 me guardo eso para futuras aplicaciones, porque me da pereza modificar la que ya tengo hecha XD

JuAn4k4

Tienes que hacer una llamada ajax al servlet, ¿Utilizas algún framework (Spring,Struts, etc.. ) ?

el response le puedes meter un json / xml con los datos de las opciones , o directamente el html resultado de las opciones del combo en el servlet (Que luego se lo metes al select)

Yo le devolveria un json tal que así: (No se muy bien la nomenclatura de json..)

{estado=1, mensajeError="", resultado=[
{value=1,descripcion="texto opcion 1"}, {value=2, descripcion="texto op2"}, ...] }

...
success: function(data) {
var json = eval(data);
if (data.estado == 1) {
$("#segundoComboBoxId").html(data.resultado);
} else { alert(data.mensajeError); }

MTX_Anubis

A título informativo y solo para que lo conozcas por si acaso, hay librerías bastante chulas de JS para formularios y eso.

Nosotros utilizamos ExtJS.

#6 Tienes librerías para pasar objetos java a json.

TheBis

Merci a todos. Me lo apunto todo y de cara a la próxima apli (o si me piden optimizar ésta) les echaré un vistazo. :D

Usuarios habituales

  • TheBis
  • MTX_Anubis
  • JuAn4k4
  • Shendraf
  • NeB1
  • Buffoncete