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

uso de clases en un scritp dentro de un jsp

Estas en el tema de uso de clases en un scritp dentro de un jsp en el foro de Java en Foros del Web. Tengo un formulario con un select que según el dato que escojamos en el select se rellenen otros datos dentro del formulario. Para eso estoy ...
  #1 (permalink)  
Antiguo 24/11/2006, 02:57
 
Fecha de Ingreso: noviembre-2006
Mensajes: 12
Antigüedad: 17 años, 5 meses
Puntos: 0
uso de clases en un scritp dentro de un jsp

Tengo un formulario con un select que según el dato que escojamos en el select se rellenen otros datos dentro del formulario. Para eso estoy usando la función "OnChange" dentro del select. Esta funcion llama a una función que está en un script. La cosa es que dentro de este scritp quiero usar la clase Integer por ejemplo u otra declarada en cualquier paquete mio. Por ejemplo:

<%@page import="Comun.AgenteBD"%>
<head>
....
<%! AgenteBD agente = new AgenteBD...%>
<script type="text/javascript">

function PonerDatosMolde(){
document.formBajaMolde.tipoMolde.style.visibility= 'visible';
<!-- Buscamos los datos de dicho molde en la bd -->
String tablaMolde = agente.ListaTabla("Molde");
String tokens[] = tablaMolde.split("<sep>");
<!-- Asignariamos los datos a los textbox -->
document.formBajaMolde.tipoMolde.value=1;

}
</script>
</head>
<body>
...

El problema es que me dice que 'agente' es desconocido. Qué puedo hacer? Alguna idea? Gracias
  #2 (permalink)  
Antiguo 24/11/2006, 03:33
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
¿Estás intentando llamar a tus clases Java que estan en el servidor desde JavaScript que se ejecuta en el cliente?

Si es eso, la respuesta es: no se puede hacer directamente.
  #3 (permalink)  
Antiguo 24/11/2006, 05:26
 
Fecha de Ingreso: noviembre-2006
Mensajes: 12
Antigüedad: 17 años, 5 meses
Puntos: 0
Entonces no hay ninguna forma que me permita acceder a la base de datos desde el cliente?
  #4 (permalink)  
Antiguo 24/11/2006, 06:09
 
Fecha de Ingreso: noviembre-2006
Mensajes: 12
Antigüedad: 17 años, 5 meses
Puntos: 0
Yo en mi jsp tengo esto:

<%@page import="Comun.AgenteBD"%>
<head>
....
<%! AgenteBD agente = new AgenteBD...%>

y la clase AgenteBD es la que realiza la conexión con la base de datos. Me estas diciendo que eso no lo puedo hacer? No lo acabo de entender
  #5 (permalink)  
Antiguo 24/11/2006, 07:05
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
No, cuando haces eso estas accediendo a la BDD desde el servidor ya que la JSP se ejecuta en el servidor y antes de enviarle la pagina HTML resultante al cliente. Despues de eso, el JavaScript se ejecuta en el cliente y no tienes acceso al codigo Java de la JSP, ya que eso "quedó" en el servidor en la fase anterior.

Por clarificar:
El código Java se ejecuta en el servidor.
El código JavaScript se ejecuta en el cliente.

Las relacion en una misma petición es que el codigo Java puede generar codigo JavaScript que se ejecutará más tarde en el cliente, pero desde JavaScript no puedes acceder al Java de la página JSP que se uso para enviar ese mismo JS al cliente.
  #6 (permalink)  
Antiguo 24/11/2006, 08:10
Avatar de Felippe  
Fecha de Ingreso: octubre-2006
Mensajes: 54
Antigüedad: 17 años, 6 meses
Puntos: 0
Hola vetustas, lo que entiendo de tu problema es que tienes un campo de un formulario que denpende de otro, verdad?.

Bueno, lo que se me ocurre es que manejes invocaciones 'asíncronas' al servidor, para que puedas ejecutar una consulta adecuadamente desde un JavaScript. Para eso te recomiendo te informes sobre AJAX, que hace exactamente lo que necesitas.

Un Saludo
  #7 (permalink)  
Antiguo 25/11/2006, 11:17
 
Fecha de Ingreso: noviembre-2006
Mensajes: 12
Antigüedad: 17 años, 5 meses
Puntos: 0
Dices que no se puede hacer directamente. Yo tengo esto:

<%@page import="Comun.AgenteBD"%>
<head>
....
<%! AgenteBD agente = new AgenteBD("prueba","prueba","postgres","127.0.0.1") */;%>

y el constructor de AgenteBD es el que se conecta a la base de datos.

Yo en la llamada al constructor estoy indicandole el host. No bastaria con indicarle ahi el host de mi servidor donde está la base de datos. No podria tener el código java de AgenteBD.java en el cliente también? No seria elegante no? Y entonces puedo hacer en el jsp la conexión a la base de datos poniendo directameente:


// Carga el driver ODBC y lo registra ante el DriverManager
Class.forName("org.postgresql.Driver").newInstance ();

//Nos conectamos a la base de datos
String url = "jdbc:postgresql://"+host+"/"+basedatos;
con = DriverManager.getConnection(url,usuario,password);


y demás rollo.

Siento marear tanto pero es que quiero entenderlo bien. Gracias por adelantado.
  #8 (permalink)  
Antiguo 25/11/2006, 19:51
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
JSP -> Servidor. Ni elegante ni no elegante. El codigo JSP no se puede ejecutar en el cliente. Así de sencillo.
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 21:44.