Java - Formulario Struts

 
Vista:

Formulario Struts

Publicado por Mercedes (125 intervenciones) el 10/05/2007 10:22:45
Buenos dias.
Tengo una duda y es que tengo un javascript que hace que pulsando un boton se me despliegue un calendario y pulsando un día se coloque la fecha en el correspondiente textfield. Lo que pasa es que lo he probado en una jsp independiente y funciona correctamente, pero cuando lo pongo en mi formulario en un proyecto Struts no va, pulso el boton y no hace nada. Alguna pista.Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Formulario Struts

Publicado por Gonzalo (180 intervenciones) el 10/05/2007 10:48:21
Habría que ver el código o algo para saber qué pasa. Porque así sólo con la descripción, vete tú a saber.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Formulario Struts

Publicado por Mercedes (125 intervenciones) el 11/05/2007 09:33:01
Perdón, se me olvidó postear el código. Aquí va, esta es la forma en que debo llamar al calendario. Decir que el calendario está en Javascript y que funciona perfectamente, pues como comente en el otro post lo he probado a parte.

<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>

<html>
<head>
<title><bean:message key="registro.titulo"/></title>

<!-Hoja de estilos del calendario -->
<link rel="stylesheet" type="text/css" media="all" href="calendar-blue.css" title="win2k-cold-1" />

<!-- librería principal del calendario -->
<script type="text/javascript" src="calendar.js"></script>

<!-- librería para cargar el lenguaje deseado -->
<script type="text/javascript" src="lang/calendar-es.js"></script>

<!-- librería que declara la función Calendar.setup, que ayuda a generar un calendario en unas pocas líneas de código -->
<script type="text/javascript" src="calendar-setup.js"></script>

<script>
function cargarSelectDia(mes){
var longitudMes = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

var comboDia = document.forms[0].diaFechaNac;
var diaSel = '<bean:message key="dia.texto"/>';
if(comboDia.options.length > 1){
diaSel = comboDia.option[comboDia.selectedIndex].value;
}
if(comboDia.options.length == 1){
diaSel = document.forms[0].diaSel.value;
}
comboDia.options.length = longitudMes[mes-1];
for(var i=1;i<=longitudMes[mes-1];i++){
var nuevaOpcion = new Option(i, i);
comboDia.options[i] = nuevaOpcion;
if(diaSel == i){
comboDia.options[i].selected = true;
}
}
}
function cargarSelectMes(){
var meses = new Array(<bean:message key="meses.array"/>);
var mesSel = document.forms[0].mesSel.value;
var comboMes = document.forms[0].mesFechaNac;
for(var i=1;i<=12;i++){
var nuevaOpcion = new Option(meses[i-1], i);
comboMes.options[i] = nuevaOpcion;
if(mesSel == i){
comboMes.options[i].selected = true;
}
}
}
function cargarSelectANo(anoIni, anoFin){
var comboANo = document.forms[0].anoFechaNac;
var anoSel = document.forms[0].anoSel.value;
for(var i=anoIni;i<=anoFin;i++){
var nuevaOpcion = new Option(i, i);
comboANo.options[i-anoIni + 1] = nuevaOpcion;
if(anoSel == i){
comboANo.options[i-anoIni + 1].selected =true;
}
}
}
function cambioSelectMes(){
var comboMes = document.forms[0].mesFechaNac;
var mes = comboMes.options[comboMes.selectedIndex].value;
if(mes == 0)
cargarSelectDia(1);
else
cargarSelectDia(mes);
}
function iniciar(){
objetoDate = new Date()
cargarSelectANo(1970, objetoDate.getYear());
cargarSelectMes();
cargarSelectDia(1);
if(document.forms[0].tipoDeEnseNanza.value != 'S'){
document.forms[0].creditosTotales.disabled = false;
}else{
document.forms[0].creditosTotales.disabled = true;
document.forms[0].creditosTotales.value = '';
}
}

function enviar(accion){
document.forms[0].accionAlumno.value = accion;
document.forms[0].submit();
}
</script>

</head>
<body onload="iniciar();">
<html:form action="/registroUsuario">
<table>
<tr>
<td align="right">
<bean:message key="nombre.texto" />
</td>
<td>
<html:text property="nombre" size="30" />
<html:errors property="nombre" />
</td>
</tr>
<tr>
<td align="right">
<bean:message key="apellidos.texto" />
</td>
<td>
<html:text property="apellidos" size="30" />
<html:errors property="apellidos" />
</td>
</tr>
<tr>
<td align="right">
<bean:message key="fechaN.texto" />
</td>
<td align="left">
<html:select property="diaFechaNac">
<html:option value="0">
<bean:message key="dia.texto" />
</html:option>
</html:select>
<html:select property="mesFechaNac" onchange="cambioSelectMes();">
<html:option value="0">
<bean:message key="mes.texto" />
</html:option>
</html:select>
<html:select property="anoFechaNac">
<html:option value="0">
<bean:message key="año.texto" />
</html:option>
</html:select>
<html:errors property="fechaNac" />
</td>
<td align="right"><html:image alt="cal" page="/imAgenes/cal.jpg"></html:image></td>
</tr>
<tr>
<td align="right">
<bean:message key="sexo.texto" />
</td>
<td>
<html:radio property="sexo" value="H" />
<bean:message key="hombre.texto" />
<html:radio property="sexo" value="M" />
<bean:message key="mujer.texto" />
<html:errors property="sexo" />
</td>
</tr>
<tr>
<td align="right">
<bean:message key="tipoE.texto" />
</td>
<td>
<html:select property="ocupacion">
<html:option value="S">
<bean:message key="seleccioneO.opcion" />
</html:option>
<html:option value="E">
<bean:message key="estudiante.opcion" />
</html:option>
<html:option value="T">
<bean:message key="trabajador.opcion" />
</html:option>
<html:option value="O">
<bean:message key="otros.opcion" />
</html:option>
</html:select>
<html:errors property="ocupacion" />
</td>
</tr>
<tr>
<td align="right">
<html:reset>
<bean:message key="restablecer.label"/>
</html:reset>
</td>
<td align="left">
<html:button property="seleccionarM"
onclick="enviar('irSeleccionarMaterias');">
<bean:message key="seleccionarM.label"/>
</html:button>
</td>
</tr>
</table>
<html:hidden property="accionAlumno" value="execute" />
<input type="hidden" value="<bean:write name="registroForm" property="anoFechaNac"/>" name="anoSel"/>
<input type="hidden" value="<bean:write name="registroForm" property="mesFechaNac"/>" name="mesSel"/>
<input type="hidden" value="<bean:write name="registroForm" property="diaFechaNac"/>" name="diaSel"/>
<input type="hidden" value="<bean:write name="registroForm" property="ocupacion"/>" name="ocupSel"/>

</html:form>

<!-- formulario con el campo de texto y el botón para lanzar el calendario-->
<form action="#" method="get" id="lanzador">
<input type="text" name="date" id="campo_fecha" />
<input type ="image" src="./imAgenes/cal.jpg" /></form>

<!-- script que define y configura el calendario-->
<script type="text/javascript">
Calendar.setup({
inputField : "campo_fecha", // id del campo de texto
ifFormat : "%d/%m/%Y", // formato de la fecha que se escriba en el campo de texto
button : "lanzador" // el id del botón que lanzará el calendario
});
</script>

</body>
</html>

Por último decir que he colocado el calendario al final, pero esa no es la ubicación que llevará finalmente, irá al lado de la fecha de nacimiento.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Formulario Struts

Publicado por Gonzalo (180 intervenciones) el 12/05/2007 00:35:20
Veamos...

Con eso no puedo ver casi nada. Como mínimo necesitaría ver el calendar-setup.js, pero lo que sí te puedo decir por los comentarios que hay, es que cuando pones al final...

button : "lanzador" // el id del botón que lanzará el calendario

lanzador no es el id de ningún botón, sino el del formulario. No sé si eso tendrá que ver o no, pero claramente tienes puesto id="lanzador" en el <form> no en ningún botón.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Efectivamente...

Publicado por Gonzalo (180 intervenciones) el 12/05/2007 00:55:33
Por lo que veo en la documentación de JSCalendar para la función setup el valor de button es el id del botón (o imagen). Es decir, que en lugar de
<form action="#" method="get" id="lanzador">
<input type="text" name="date" id="campo_fecha" />
<input type ="image" src="./imAgenes/cal.jpg" />
</form>

Tendrías que poner:
<form action="#" method="get">
<input type="text" name="date" id="campo_fecha" />
<input type ="image" src="./imAgenes/cal.jpg" id="lanzador" />
</form>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Efectivamente...

Publicado por Mercedes (125 intervenciones) el 14/05/2007 10:52:46
Antes de nada muchas gracias, pero he probado a ponerlo así también y me sigue sin funcionar. No sé si tendrá que ver algo el struts-config.xml o no sé si el resto del formulario, es que no entiendo porqué no me funciona.
Gracias de nuevo.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Efectivamente...

Publicado por Gonzalo (180 intervenciones) el 14/05/2007 11:39:48
Uhm, no sé qué tiene realmente esto que ver con el struts-config.

Quiero decir, el calendario este (es JSCalendar, no?) es algo que ocurre en la página usando Javascript. Struts no se entera de esto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Efectivamente...

Publicado por Mercedes (125 intervenciones) el 14/05/2007 11:43:53
En efecto, supuestamente Struts no se entera de ello, es código javascript que está en una jsp. Pero no entiendo porque no me funciona, pues lo he probado en una jsp a parte y ahí si que corre. :-(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Efectivamente...

Publicado por Gonzalo (180 intervenciones) el 14/05/2007 15:34:24
Bueno, compara a ver entre los dos JSPs qué es lo que hay distinto.

Por otra parte, si puedes, abre tu aplicación de Struts en el navegador, ve a la página en cuestión donde no funciona el calendario, dale a ver el código fuente, y cópialo aquí (no hace falta todo, claro, sólo las partes interesantes). Es decir, no el JSP tal cual si no el HTML generado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Efectivamente...

Publicado por Mercedes (125 intervenciones) el 15/05/2007 10:08:40
<html>
<head>
<title>Registrar usuario</title>

<!-Hoja de estilos del calendario -->
<link rel="stylesheet" type="text/css" media="all" href="calendar-blue.css" title="win2k-cold-1" />

<!-- librería principal del calendario -->
<script type="text/javascript" src="calendar.js"></script>

<!-- librería para cargar el lenguaje deseado -->
<script type="text/javascript" src="lang/calendar-es.js"></script>

<!-- librería que declara la función Calendar.setup, que ayuda a generar un calendario en unas pocas líneas de código -->
<script type="text/javascript" src="calendar-setup.js"></script>
[...]
function iniciar(){
objetoDate = new Date()
cargarSelectANo(1970, objetoDate.getYear());
cargarSelectMes();
cargarSelectDia(1);
}

function enviar(accion){
document.forms[0].accionAlumno.value = accion;
document.forms[0].submit();
}
</script>

</head>
<body onload="iniciar();">
<form name="registroForm" method="post" action="/StrutsPracticaFinal/registroUsuario.do">
<!-- aquí va el código del formulario con datos como nombre, apellidos, sexo...-->
</form>

<!-- formulario con el campo de texto y el botón para lanzar el calendario-->
<form action="#" method="get">
<input type="text" name="date" id="campo_fecha" />
<input type ="image" src="./imAgenes/cal.jpg" id="lanzador" />
</form>

<!-- script que define y configura el calendario-->
<script type="text/javascript">
Calendar.setup({
inputField : "campo_fecha", // id del campo de texto
ifFormat : "%d/%m/%Y", // formato de la fecha que se escriba en el campo de texto
button : "lanzador" // el id del botón que lanzará el calendario
});
</script>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Uhm... Esto...

Publicado por Gonzalo (180 intervenciones) el 15/05/2007 11:14:19
Uhm, y ¿qué es lo que no te funciona?

Porque acabo de copiar ese código tal cual, sin cambiar nada de nada, he puesto los ficheros del jscalendar, lo he cargado tanto en Firefox como en IExplore y en los dos me funciona sin ningún problema.

Aparece el campo y el botón (la imagen no, claro, porque no la tengo). Le doy al botón y sale el calendario. Elijo un día y se carga en el campo correctamente.

Así que no entiendo muy bien qué problema tiene.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Bueno, me corrijo...

Publicado por Gonzalo (180 intervenciones) el 15/05/2007 11:19:16
Matizo un poco.

Funcionarme me funciona perfectamente pero...

1. Sí que hay algo que no funciona, claro.
Es lo de cargarSelectANo() y similares. Pero es normal que no funcione porque esas funciones no las has puesto :)

2. Sí que he cambiado algo.

Pero supongo que es cosa de copiar y pegar. He:
a. añadido un <script> que faltaba antes de [...] (y he quitado eso, claro)
b. cambiado el comentario <!-- Hoja de estilos del calendario --> que le faltaba un - en la apertura


Pero lo que es el calendario me funciona sin ningún problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Bueno, me corrijo...

Publicado por Mercedes (125 intervenciones) el 15/05/2007 11:29:05
Puff... estoy volviendome loca con esto ya :-(.
Recapitulemos... El calendario si me funciona si lo coloco en una jsp y lo cargo en IExplorer, mi problema desde el principio ha sido que si pongo el código en mi jsp de mi proyecto Struts no se me despliega el calendario, no entiendo por qué y cada vez menos...
Exactamente lo que ocurre cuando le doy al calendario (en la jsp de mi proyecto Struts) es que parece que vuelve a cargar la página o algo así y en la barra de direcciones pone algo tal que así:
http://localhost:8080/StrutsPracticaFinal/registrarse.do?date=&x=23&y=28
siendo lo ultimo lo que añade, pero el calendario no se me despliega, por ello en otro post le pregunte si tenía que ver algo la configuración del struts-config.xml.

Lo siento, no se si estará siendo esto muy pesado, pero necesito solucionarlo porque me tiene perdida...

Gracias de nuevo, es usted muy amable.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Bueno, me corrijo...

Publicado por Mercedes (125 intervenciones) el 15/05/2007 11:38:52
Bueno entonces supongo que el problema venga del formulario donde se piden datos al usuario, aunque tampoco tiene nada extraordinario el formulario..
Si no le importa le copio toda la jsp y le echa un vistazo si puede, sino no se preocupe, muchas gracias igualmente.

¿Le importa que se la envíe a su correo?Es que por aquí el código puede que sea demasiado para pegar en un post. Dime usted que hago, si se la envío o la posteo aquí. Gracias.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar