所以最近我开始在我正在工作的公司中开发一个很大的旧应用程序。它是用Spring编写的,并且使用struts 1.2作为控制器 - 这是一项我并不熟悉的技术。我的任务是添加多个接受选项 - 有一个接受单个发票的选项。因为我不知道struts是如何工作的(并且相信我的架构这个应用程序是完整的意大利面)我想使用这个单一的接受动作来进行多次接受 - 将id传递给方法,如果有多个id请求遍历所有这些请求并遍历每个id的接受过程(这也很长且非常难以理解)。
问题是 - 表单似乎没有将id传递给url - 在方法中我从请求url中检索Id的数组。 struts中有没有办法通过url传递参数?
看起来更像这样:
表格:
# group all files with the extension .csv
filenames <- Sys.glob("*.csv")
# Then the loop
for(i in filenames) {
tables <- get(i)
names(tables) <- "epitope"
assign(i, tables)
}
struts.xml中
<html:form action="/invoice_processing" method="get" styleClass="form">
<c:if test="${not empty invoices_list_with_dynamic_checkboxes}">
<jsp:include page="/WEB-INF/jsp/invoices/dynamic_invoices_list_with_checkboxes" flush="true"/>
</c:if>
</html:form>
编辑 - 添加表格和方法“invoices_list_with_dynamic_checkboxes”
<action path="/invoice_processing"
type="pl.blah.blah.InvoiceProcessor"
name="invoice_processing_form" scope="session" validate="false">
<forward name="executeTask" path="/i_do_not_matter.do" />
</action>
它所采用的方法(注意:ActionContext是自制类,它不实现扩展任何上下文类的任何接口 - 尽管它通过getRequest()检索请求URL - 尽管它提供了像invoiceProcessing这样的东西。做)
<div class="table">
<table class="table_list_highlight">
<thead>
<tr>
<th rowspan="2">I do not matter ID</th>
<th rowspan="2">I do not matter</th>
<th rowspan="2">I do not matter</th>
<th rowspan="2">Check the checkbox</th>
</tr>
</thead>
<c:forEach var="singleInvoice" items="${invoicesThatAreDeclaredBeforeAndWork}">
<tbody>
<tr>
<td rowspan="2"><c:out value="${singleInvoice.invoice.amount}"/></td>
<td rowspan="2"><c:out value="${singleInvoice.invoice.date}"/></td>
<td rowspan="2"><c:out value="${singleInvoice.invoice.whatever}"/></td>
<td rowspan="2"><input type="checkbox" name="checkboxGroup" value='${singleInvoice.invoice.id}'></td>
</tr>
</tbody>
</c:forEach>
</table>
</div>
所有这些名称都用英语重命名 - 我无法复制粘贴所有这些代码,因为它真的很长,并且基本上有一些有用的东西,而且不是问题。问题在于检索表单本身提交的id。