我正在开发 SpringMVC Webapp。我有一个由动态形式组成的视图。表单的动态元素如下图所示:
现在,目前的情况是:
我将变量${worksiteCount}
从我的控制器传递到视图(存储在我的 portlet 会话中 - 默认为 1)。
表单提交包含一个在后端处理表单数据的@ActionMapping。
我的页面中有另一个按钮,允许用户在必要时添加额外的工程工作场所 - 额外的工作场所 #1 等)。
单击会触发 @RequestMapping 更新“worksiteCount”并返回带有附加表单字段的视图。
问题是:我在表格中填写的任何数据都会在单击此请求时被删除。
如何在会话中保留这些数据?例如,我应该使用 Ajax 脚本(最好使用 DOJO/Vanilla JS)在 jsp 端异步增加变量 {worksiteCount} 吗?
如果是这样,我该怎么做而不刷新视图?
我是 Ajax-Dojo(如 dojo.xhrGet/post)、Spring 框架的初学者。请帮忙。
<c:if test="${worksiteCount>1}">
<c:set var="i" value="0"/>
<c:forEach var="worksiteAddresses" items="${worksiteAddresses}">
<c:set var="i" value="${i+1}"/>
<c:if test="${worksiteCount>1}">
<div class="row">
<h2 id="worksiteAddress${i}" name="worksiteAddress${i}">Additional Worksite<span>${i}</span></h2>
</div>
</c:if>
<div class="row">
<div id="f-addr1" class="field">
<label>Address1<span><tag:requiredIcon/> </span></label>
<input class="" type="text" value="${worksiteAddresses.companyAddressLine1}" id="addressLine1${i}" name="addressLine1${i}" onblur="validateControl('addressLine1${i}');"/>
</div>
<div id="f-addr2" class="field">
<label>Address2</label>
<input class="" type="text" value="${worksiteAddresses.companyAddressLine2}" id="addressLine2${i}" name="addressLine2${i}" />
</div>
<br class="clear" />
</div>
<div class="row">
<div id="f-city" class="field">
<label>City<span><tag:requiredIcon/> </span></label>
<input class="" type="text" name="city${i}" id="city${i}" value="${worksiteAddresses.companyCity}" onblur="validateControl('city${i}');" />
</div>
<div id="f-zip" class="field">
<label>Zip<span><tag:requiredIcon/> </span></label>
<input class="" type="text" name="zip${i}" id="zip${i}" value="${worksiteAddresses.Zipcode}" onblur="validateZipControl('zip${i}',${i});" />
</div>
<br class="clear" />
</div>
</c:forEach>
</c:if>