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!