Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/02/2008, 06:31
lfc
 
Fecha de Ingreso: febrero-2008
Mensajes: 23
Antigüedad: 16 años, 10 meses
Puntos: 0
Desacuerdo Formulario dinámico

Hola,

Tengo un formulario creado con Struts2 (la parte estática del formulario, siempre está) y con Ajax y javascript (la parte dinámica, el formulario va agregando elementos en función de lo que el usuario le va introduciendo). Y hasta aquí bien.

El problema es cuando tengo que hacer el submit del formulario, enviar los datos al servidor. No sé como enviar estos datos, porque con javascript se hace mediante el XMLHttpRequest y en cambio con Struts2 mediante una Action (la cuál tiene los mismos atributos que todos los campos del formulario).

Os pongo un trozo del código:

Código:
<%@ taglib prefix="s" uri="/struts-tags" %>

<html>

	<head>
		<title>ARS - Is Available Form</title>
		<s:head theme = "ajax"/>
		<link href="<s:url value="/css/mainstyle.css"/>" rel="stylesheet" type="text/css"/>
		<link rel="STYLESHEET" type="text/css" href="rich_calendar/rich_calendar.css">
		<script language="JavaScript" type="text/javascript" src="rich_calendar/rich_calendar.js"></script>
		<script language="JavaScript" type="text/javascript" src="rich_calendar/rc_lang_en.js"></script>
				 
		<script language="javascript" type="text/javascript">
			// on click -> disable/enable the jobID textfield
			function insertJobID()
			{
				if (document.formreservation.jid.disabled == true)
				{
					document.formreservation.jid.disabled = false
				}
				else
				{
					document.formreservation.jid.disabled = true
				}
			}
			
			// onkeyup -> create a DIV for each service
			function addDivsServices(event)
			{
				divservices = document.createElement('div');
				divservices.id = 'divservices';
				divservices.style.border = "solid #00bfff 3px";
				divservices.style.padding = "5px";
				(document.getElementById('formreservation')).appendChild(divservices);
					
				for(i = 0; i < numS; i++) 
				{							
					//THE DIV OF THE SERVICE -> name: 'divservice' + i
					divservice = document.createElement('div');
					divservice.id = 'divservice' + i;
					divservice.style.border = "solid #00cd00 3px";
					divservice.style.padding = "5px";
					divservice.appendChild(document.createElement('br'));
					
					//SERVICE ID
					txt = document.createTextNode('Service ID: ');
					serviceid = document.createElement('input');
				    serviceid.name = 'serviceid' + i;
				    divservice.appendChild(txt);
				    divservice.appendChild(serviceid);
				    
				    //SPACE
				    space = document.createTextNode("\u00a0");
				    divservice.appendChild(space);
					
					//COMBOBOX TYPE OF RESERVATION
					txt = document.createTextNode('Type of Reservation: ');
					cbx = document.createElement('select');
					cbx.name = 'tor' + i;
					
					opt = document.createElement('option');
					opt.value = '1';
					opt.text =  '1';
					cbx.appendChild(opt);
					
					opt = document.createElement('option');                     
					opt.value = '2';
					opt.text =  '2';
					cbx.appendChild(opt);
					
					opt = document.createElement('option');                     
					opt.value = '3';
					opt.text =  '3';
					cbx.appendChild(opt);
					cbx.onchange = addReservationConstraints;
									
					divservice.appendChild(txt);
					divservice.appendChild(cbx);
					
					//NEW LINE
					divservice.appendChild(document.createElement('br'));
					divservice.appendChild(document.createElement('br'));
					
					[...]	
				}
			}
			
			[...]
		</script>
	</head>
	
	<body>
		<h1> Is Available </h1>
		<br>
		<s:form name = "formreservation" id = "formreservation" action = "isAvailable" method = "POST">
			<s:checkbox label = "Is a PRE reservation? " name = "ispre" value = "false" onclick = "insertJobID()"/><br>
			<s:textfield name = "jid" label = "Job ID" disabled = "true"/><br>
			<s:textfield name = "numservices" label = "Number of services" onkeyup = "addDivsServices(event)"/><br>
			<s:submit value = "Submit" align = "center"/>			
		</s:form>
	</body>
</html>
Alguna idea? Es que he buscado en todas partes y ya no sé que hacer... necesito los struts2 porque la aplicación web que estoy desarrollando está basada en struts2, y también necesito ajax con javascript para poder generar ese formulario incremental (dinámico, variable... lo que sea...) ...

Cualquier ayuda me servirá... Muchas gracias!