1. 程式人生 > >jsp form submit 提交到後臺的input元素的值中包含之前查詢過的內容

jsp form submit 提交到後臺的input元素的值中包含之前查詢過的內容

部分jsp頁的程式碼如下:

<form method="post" action="/detailInfoController/managerChange" id="managerChangeForm">
    <div>
      <span class="search-p">
            <input id="inputTxt" name="keyword" value="${keyword}" type="text" class="search-p-input"
                   placeholder="可搜尋需求編號、負責人ERP,表名">
        </span>
      <span class="search-bt-p">
        <input id="searchBt" type="button" value="搜尋" class="search-bt-p-input">
      </span>
    </div>
    <table><%--  此處是for迴圈畫出的表格 --%></table>
</form>

後臺的程式碼如下:

@RequestMapping("managerChange")
    public String managerChange(Model model, String keyword){
        List lists = detailInfoService.getDetailInfoListsForPage(keyword);
        String erp = SessionUtils.getUserErp();
        model.addAttribute("data", lists);
        model.addAttribute("keyword", keyword);
        model.addAttribute("userErp",erp);
        return "detail/managerChange";
    }
   例如第一次查詢的是aaaa,則後臺keyword傳入的值是aaaa,如果第二次查詢的值是bbbb,則後臺keyword傳入的值就變成了bbbb,aaaa,當真是奇怪。
   後來查看了一下了之前寫過的相似的jsp,才發現是因為form的範圍過大造成的。jsp部分的程式碼改成下面的程式碼就好了:
<form method="post" action="/detailInfoController/managerChange" id="managerChangeForm">
    <div>
      <span class="search-p">
         <input id="inputTxt" name="keyword" value="${keyword}" type="text" class="search-p-input" placeholder="可搜尋需求編號、負責人ERP,表名">
        </span>
      <span class="search-bt-p">
        <input id="searchBt" type="button" value="搜尋" class="search-bt-p-input">
      </span>
    </div>
</form>

也就是將與搜尋無關的內容全都排除出去。具體的原因,還不清楚,待之後明白了再來補充,現在先記錄一下。