簡體   English   中英

復選框和相應行的值(從jsp到Java控制器文件)

[英]checkbox and respective row's values from jsp to java controller file

我在spring mvc中工作,現在專注於從jsp對表的插入操作,然后執行控制器。

我有數據庫中搜索查詢的值列表。 我只想保存很少的行,而不是全部。 為此,我放置了一個復選框以選擇需要刪除的行,以便只能將其插入表中。

如果我在該表中選擇第三行,則得到的chackbox值僅與所選值相同。 但是我無法在該第三行中獲取其他值,相反,我只能獲取第一行值。 任何人都可以給出正確的方法來做到這一點嗎?

JSP:

    <div id="login_block">
        <center>
            <span style="font-size: 2em;">Funder Assign </span></center>        
                <div style="margin-top: 30px;">
                    <form id="saveAssign" method="POST" name="saveAssign"
                        action="saveAssign.htm" autocomplete="on">

                        <label class="bold_text" style="margin-right:5%; margin-left:10%;">Loan Type</label> 
                            <select name="producttype" id="producttype" style="width:29%;">
                                <option value="0">--Select--</option>
                                <c:forEach var="entry" items="${productList}">
                                    <option value="${entry.key}">${entry.value}</option>
                                </c:forEach>
                            </select><br/><br/>
                        <table border=1>
                            <thead>
                                <tr>
                                    <th>Select</th>
                                    <th>Loan A/c No</th>
                                    <th style="width;1%;">Type</th>
                                    <th>Funder</th>
                                    <th>Purpose</th>                
                                </tr>
                            </thead>
                            <tbody>
                                <c:forEach var="loan" items="${loans}">
                                    <tr>
                                        <td><input type="checkbox" name="loanId" value="${loan.id}"></td>
                                        <td><input type="text" name = "loanAccNo" value="${loan.loanAccNo}" readonly="readonly"></td>
                                        <td><input type="text" name = "product" value="${loan.product.name}" readonly="readonly" ></td>                 
                                        <td><select id="funderId" name="funderId" >
                                                <option value="0">--Select--</option>
                                                <c:forEach var="fund" items="${fundMap}">
                                                    <option value="${fund.key}">${fund.value}</option>
                                                </c:forEach>
                                            </select></td>
                                        <td><select id="purpose" name="purpose" style="width:75%;">
                                                <option value="0">--Select--</option>
                                                <c:forEach var="purpose" items="${fundProdPurpose}">
                                                    <option value="${purpose.id}">${purpose.id}</option>
                                                </c:forEach>
                                            </select></td>                  
                                    </tr>
                                </c:forEach>
                            </tbody>
                        </table>
                        <div>
                            <input class="login_block_login_btn" type="submit" name="submit" style="margin-left:0%;"
                                value="Save" id="addfundsbtn" />
                        </div><br/><br/><br/>


            </form>
            </div>
    </div>

調節器

    public class SaveFunderAssignController extends AbstractController {

        @Resource
        private UserService userService;

        @Resource
        private CommonRepository commonRepository;


    public ModelAndView handleRequestInternal(HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        String[] loanIds = request.getParameterValues("loanId");

        if (!loanIds.equals("")) {
            return save(request, response);
        }
        return cancel(request, response);
    }

    private ModelAndView save(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        try {
            String[] loanIds = request.getParameterValues("loanId");
            String[] loanAccNos = request.getParameterValues("loanAccNo");
            String[] products = request.getParameterValues("product");
            String[] funderIds = request.getParameterValues("funderId");
            String[] purposes = request.getParameterValues("purpose");

            LoanFinance loanFinance = new LoanFinance();
            User user = userService.getLoggedInUser(request);

            for (String loanId : loanIds) {
                 int loanIdInt = Integer.parseInt(loanId) - 1;
                 Long bankId = Long.parseLong(funderIds[loanIdInt]);
                 Long loanIdLong = (long) loanIdInt + 1;
                 Long purpose = Long.parseLong(purposes[loanIdInt]);

                 System.out.println("loanIdInt**"+loanIdInt );
                 System.out.println("bankId**"+bankId );
                 System.out.println("loanIdLong**"+loanIdLong );
                 System.out.println("purpose**"+purpose );
        }       

            return doMapping("result", "Funder details added successfully",
                    request);
        } catch (Exception e) {
            e.printStackTrace();
            return doMapping("result", "Unable to add funder details", request);
        }
    }

更改為更新的循環后,“此處借出ID”僅打印為與所選值相同,但對於其他內容,則從第一行獲取...

現在,loanId在控制台中正在打印...

我嘗試了以下方法來獲取復選框的位置,但是這里同樣也只有loanId,其他都來自第一行。

我在尋找,如果選擇了第一個復選框,那么loanId將為1,如果選擇了第三個復選框和第四個復選框,則將為3,4。任何幫助將不勝感激。

        for (String string : loanIds) { 
            for (int i = 0; i < loanIds.length; i++) {  
                if (loanIds[i] == string) { 
                    Integer ge = i; 
                    System.out.println("I Value**"+i ); 
                    System.out.println("loanAccNos**"+loanAccNos[ge] ); 
                    System.out.println("funderIds**"+funderIds[ge] ); 
                    System.out.println("purposes**"+purposes[ge] ); 
                    System.out.println("loanIds**"+loanIds[ge] ); 
                    } 
            }
        }

問題出在您的檢索邏輯中。 您正在從int i = 0;檢索所有其他值int i = 0; 這就是為什么它顯示出第一價值。 在給定的循環下面嘗試。

 for (String loanId : loanIds) {    
 int loanIdInt = Integer.parseInt(loanId) - 1;
 Long bankId = Long.parseLong(funderIds[loanIdInt]);
 Long loanIdLong = (long) loanIdInt + 1;
 Long purpose = Long.parseLong(purposes[loanIdInt]);
 loanFinance.setFundingBankId(bankId);
 loanFinance.setIdFundsProductPurpose(purpose);
 loanFinance.setLoanId(loanIdLong);
 loanFinance.setLastModifiedBy(user.getId());
 loanFinance.setIdEntityloan(loanIdLong);
 loanFinance.setAmount(10000.00);
 loanFinance.setStatus("A");
 commonRepository.save(loanFinance);    
}

暫無
暫無

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

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