我有一个表单链接到一个操作,还有两个提交按钮:第一个,"aggiungiSocietà"
,在html页面上添加了一个Society(使用js函数addRow())并发送插入的值行动......当然,我可以增加一个以上的社会;
第二个"applicaFinal"
,发送页面上插入的所有值。
我的问题是:我希望第一个按钮也发送所有以前插入的值(通过Struts),但即使它在同一个Struts表单中,我也无法做到。同时,"applicaFinal"
不会发送与插入的社团相关的值,只会插入最后一个。
有人可以解释如何解决这个大问题吗?我也愿意改变我的代码的逻辑,如果它对某人没有多大意义的话。
(我会发布.jsp代码的一小部分,而不会在页面中插入20多个选项和字段)
<s:form cssClass="form-validate-jquery" action="DichiarazioniAction"
id="DichiarazioniForm" name="DichiarazioniForm"
onsubmit="return addRow();">
<div class="form-group">
<s:radio cssClass="styledRadios" name="optionsRadios4_06"
id="optionsRadios4_06" onclick="tab4_06chk00(this.value)"
list="#{'Si':'SÍ','No':'NO'}" required="required" />
</div>
<!-- Table4_00 sez4 -->
<div id="tab4_00sez4"
<s:if test='optionsRadios4_06.equals("") || optionsRadios4_06.equals("No")'>style="display: none;"</s:if>>
<!-- Tabella -->
<br>
<table id="table" class="table datatable-basic">
<tr>
<th>Denominazione</th>
<th>Sede</th>
<th>P.IVA</th>
<th>Codice Fiscale</th>
<th></th>
</tr>
<tbody id="tableInsert">
<s:iterator value="listaSocietà" var="theSocietà"
status="status1">
<s:set var="società-%{#status1.index}" value="theSocietà"
scope="session" />
<tr>
<td><s:property value="denominazione" /></td>
<td><s:property value="sede" /></td>
<td><s:property value="partitaIVA" /></td>
<td><s:property value="codiceFiscale" /></td>
<td><div align="right">
<div class="btn-group btn-group-xs">
<s:submit type="button" name="eliminaSocietà"
id="eliminaSocietà" value="%{#status1.index}"
data-toggle="tooltip" title="Elimina"
cssClass="btn btn-default">
<span class="glyphicon glyphicon-trash"></span>
</s:submit>
</div>
</div></td>
</tr>
</s:iterator>
</tbody>
</table>
<!-- Button trigger modal società controllate/collegate -->
<button type="button" class="btn btn-primary btn-lg"
data-toggle="modal" data-target="#myModalHorizontal">Inserisci
nuova società</button>
<div id="prova"></div>
<br> <br>
<!-- Modal inserimento Società Controllate/Collegate -->
<div class="modal large" id="myModalHorizontal" tabindex="-1"
role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true">×</span> <span class="sr-only">Close</span>
</button>
<h4 class="modal-title" id="myModalLabel">Inserisci
Società</h4>
</div>
<!-- Modal Body -->
<div class="modal-body">
<div class="form-group">
Denominazione: <span class="text-danger"> <b> * </b> </span>
<s:textfield name="tab4_04fld01" id="tab4_04fld01"
cssClass="form-control"
placeholder="Inserire qui la denominazione" />
<div id="errorDenominazione" style="display: none;">
<span class="text-danger">Campo obbligatorio</span>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="form-group">
Sede: <span class="text-danger"> <b> * </b> </span>
<s:textfield name="tab4_04fld02" id="tab4_04fld02"
Class="form-control" placeholder="Inserire qui la sede" />
<div id="errorSede" style="display: none;">
<span class="text-danger">Campo obbligatorio</span>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
P.IVA: <span class="text-danger"> <b> * </b> </span>
<s:textfield name="tab4_04fld03" id="tab4_04fld03"
Class="form-control"
placeholder="Inserire qui la partita IVA" />
<div id="errorP_IVA" style="display: none;">
<span class="text-danger">Campo obbligatorio
(Inserire 11 cifre)</span>
</div>
<div id="uniqueP_IVA" style="display: none;">
<span class="text-danger">Partita IVA già
inserita</span>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
Codice Fiscale: <span class="text-danger"> <b> *
</b> </span>
<s:textfield name="tab4_04fld04" id="tab4_04fld04"
Class="form-control"
placeholder="Inserire qui il codice fiscale" />
<div id="errorCF" style="display: none;">
<span class="text-danger">Campo obbligatorio
(Inserire un Codice Fiscale valido)</span>
</div>
<div id="uniqueCF" style="display: none;">
<span class="text-danger">Codice Fiscale già
inserito</span>
</div>
</div>
</div>
</div>
<div class="btn-group">
<div>
<div style="width: 100%;">
<button type="submit" name="aggiungiSocietà"
id="aggiungiSocietà" value="aggiungiSocietà"
class="btn btn-danger btn-rounded"
style="float: left; background-color: #455A64; border-color: #455A64;"
onclick="addRow()">
<i class="icon-pen-plus position-left"></i>Aggiungi
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Tabella end-->
</div>
<div class="row">
<div class="col-sm-12">
<div align="center" style="margin-top: 50px;">
<!-- <button type="reset" class="btn btn-default" id="reset">
Reset <i class="icon-reload-alt position-right"></i>
</button> -->
<button type="submit" name="applicaFinal" value="applicaFinal"
class="btn bg-romaCapitale">
Applica <i class="icon-pen6 position-right"></i>
</button>
</div>
</div>
</div>
</s:form>
答案 0 :(得分:0)
请求会话仅针对上次提交持久化。因此,您将丢失先前提交的值,但仅保留最新的值(在您的情况下实际发生)。
解决方案1
如果你想发送之前提交的“社会”值,我建议在每次“aggiungiSocietà”提交后创建“隐藏”输入以及你的表更新。在您的迭代器中包含以下内容,列出当前插入的所有行
<input type="hidden" name="varname%{status1.count}" value="varvalue">
在此之后,即使是“applicaFinal”提交按钮也应该发送所有以前添加的行。这是因为这些隐藏的输入对于此提交按钮也是可见的。
解决方案2
如果您要发送之前提交的所有“社会”值,因为用户可能想再次编辑它们,请使用文本输入而不是隐藏输入。这将允许用户编辑以前提交的数据,
<input type="text" name="varname%{status1.count}" value="varvalue">
<强>更新强>
如果您希望其他字段在多个提交中保持不变,则需要每次使用这些提交的值初始化您的jsp表单输入。您可以使用与上面相同的代码(soln 2)