簡體   English   中英

從列表jsp中獲取id值

[英]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">&times;</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修改來修復。

  1. 將模態窗口聲明移出表格。 使其成為單頁。 並重命名 id 字段以使其唯一,例如transferredId
  2. 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">&times;</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 的withdrawaltransferReference值:

request.getParameter("transferReference_119")

請原諒我沒有將其添加為評論,因為我不能,因為我仍然沒有 50 聲望(仍然是 16),我只是想讓您測試一些東西,嘗試刷新頁面,然后打開 ID 為 119 的行,例如首先時間,我的意思是任何 Id 而不是 120,看看會發生什么,如果您第一次打開的值仍然存在,那么問題不在 id 120 中,問題是您可以使用 if not null 來設置值一些地方,所以第一次它將為空並將值添加到它,但下次它已經有一個值所以你不能改變它,如果你這樣做后你不能解決問題,請上傳您的控制器,以便我們檢測問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM