[英]Get id value from list jsp
我對我的jsp有這樣的看法:
<form:form name = "command"
method = "post"
action = "withdrawRequest"
class = "form-horizontal group-border-dashed"
style = "border-radius: 0px;">
<table class = "table table-bordered"
id = "datatable-icons" > <!-- start table table-bordered -->
<thead>
<tr>
<th>ID</th>
<th>NO</th>
<th>AMOUNT (RP)</th>
<th>DOCTOR BALANCE (RP)</th>
<th>DOCTOR ID</th>
<th>DOCTOR NAME</th>
<th>TRANSFER ADMIN NAME</th>
<th>TRANSFER DATE</th>
<th>TRANSFER REFERENCE</th>
<th>TRANSFERRED</th>
</tr>
</thead>
<tbody>
<c:forEach var = "withdrawal"
items = "${listWithdrawals}"
varStatus = "loopStatus">
<tr class="odd gradeX">
<td>${withdrawal.id}</td>
<td>${loopStatus.index + 1}</td>
<td class="text-right"><fmt:formatNumber type="number" maxFractionDigits="2" value="${withdrawal.amount}" /></td>
<td class="text-right"><fmt:formatNumber type="number" maxFractionDigits="2" value="${withdrawal.doctor_balance}" /></td>
<td>${withdrawal.doctor_id}</td>
<td>${withdrawal.doctor_name}</td>
<td>${withdrawal.transfer_admin_name}</td>
<td><%-- <fmt:formatDate type="date" value="${withdrawal.transfer_date}" /> --%>${withdrawal.transfer_date}</td>
<td>${withdrawal.transfer_reference}</td>
<td class="text-center">
<c:if test="${withdrawal.transferred == true}">
<span class="label label-success">Transferred</span>
</c:if>
<c:if test="${withdrawal.transferred == false}">
<button class="btn btn-warning btn-sm md-trigger" data-modal="form-primary" type="button">Pending</button>
</c:if>
<div class="md-modal colored-header danger custom-width md-effect-9" id="form-primary">
<div class="md-content">
<div class="modal-header">
<h3>Confirm Withdrawal Request</h3>
<button type="button" class="close md-close" data-dismiss="modal" aria-hidden="true">×</button>
</div>
<div class="modal-body form">
<div class="form-group">
<label class="col-sm-3 control-label">Admin Name</label>
<div class="col-sm-9">
<input type="text" class="form-control" name="adminName" value="${adminName}">
<input type="text" class="form-control" name="id" value="${withdrawal.id}" />
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Transfer Reference</label>
<div class="col-sm-9">
<input type="text" class="form-control" name="transferReference" value="${transferReference}">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default btn-flat md-close" data-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-danger btn-flat md-close" name="submitRequest">Submit</button>
</div>
</div>
</div>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</form:form>
我無法從視圖中獲取我選擇的按鈕的 ID,
<input type = "text"
class = "form-control"
name = "id"
value = "${withdrawal.id}" />
如果我使用此代碼
String withdrawalId = request.getParameter("id");
該值始終為 120。例如:
單擊模態窗口時如何獲取正確的 ID?
問題似乎出在您用於彈出窗口的 Nifty Modal Window Effects中。 它打開最后一行的模式窗口。
它可以通過以下jsp修改來修復。
transferredId
onclick
添加到打開模態窗口的按鈕中,以便使用必要的值對其進行初始化(設置 transferId 和其他)所以你的表格將是(只是結束以節省空間)
....
<td class="text-center">
....
<c:if test="${withdrawal.transferred == false}">
<button class="btn btn-warning btn-sm md-trigger" data-modal="form-primary" type="button"
onclick="document.getElementById('transferredId').value=${withdrawal.id}">
Pending
</button>
</c:if>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<div class="md-modal colored-header danger custom-width md-effect-9" id="form-primary">
<div class="md-content">
<div class="modal-header">
<h3>Confirm Withdrawal Request</h3>
<button type="button" class="close md-close" data-dismiss="modal" aria-hidden="true">×</button>
</div>
<div class="modal-body form">
<div class="form-group">
<label class="col-sm-3 control-label">Admin Name</label>
<div class="col-sm-9">
<input type="text" class="form-control" name="adminName" value="${adminName}">
<input type="text" class="form-control" name="transferredId" id="transferredId" />
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Transfer Reference</label>
<div class="col-sm-9">
<input type="text" class="form-control" name="transferReference">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default btn-flat md-close" data-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-danger btn-flat md-close" name="submitRequest">Submit</button>
</div>
</div>
</div>
在該String withdrawalId = request.getParameter("transferredId");
之后, String withdrawalId = request.getParameter("transferredId");
將返回正確的 ID。
檢查生成的 HTML。 在我看來,它包含該<input
listWithdrawals.length
實例,並且它們都具有相同的名稱。
request.getParameter("id")
將返回單個值,而不是所有值的列表。 您需要的是request.getParamaterValues("id")
將返回所有這些。
這是因為當提交表單時,所有這些輸入值都將被發送。
所以簡單的解決方案(沒有 JavaScript 魔法)是使用request.getParamaterValues
獲取所有值列表並處理所有更改的內容。 ids[0]
和transferReferences[0]
將是listWithdrawals
第一項所需的值:
String[] ids = request.getParamaterValues("id");
String[] transferReferences = request.getParamaterValues("transferReference");
for (int i = 0; i < ids.length; i++) {
System.out.println(ids[i]);
System.out.println(transferReferences[i]);
}
另一種解決方案是為listWithdrawals
每個輸入/項目生成唯一名稱:
<c:forEach var="withdrawal" items="${listWithdrawals}" varStatus="loopStatus">
<input type="text" class="form-control" name="${'transferReference_'.concat(withdrawal.id)}" value="${withdrawal.id}" />
</c:forEach>
然后您就可以像這樣訪問 ID 為 119 的withdrawal
的transferReference
值:
request.getParameter("transferReference_119")
請原諒我沒有將其添加為評論,因為我不能,因為我仍然沒有 50 聲望(仍然是 16),我只是想讓您測試一些東西,嘗試刷新頁面,然后打開 ID 為 119 的行,例如首先時間,我的意思是任何 Id 而不是 120,看看會發生什么,如果您第一次打開的值仍然存在,那么問題不在 id 120 中,問題是您可以使用 if not null 來設置值一些地方,所以第一次它將為空並將值添加到它,但下次它已經有一個值所以你不能改變它,如果你這樣做后你不能解決問題,請上傳您的控制器,以便我們檢測問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.