本人系小白一枚,前不久剛剛接觸Spring MVC,然後問題重重。對於下面的問題,大佬勿噴,僅供和自己一樣初入SM的小白參考。因爲某些原因文中部分ID做了處理。
由於客戶需求,需要做檢索功能,大體樣式如下圖:
代碼實現如下:
<form:form id="xxxx" modelAttribute="XXXXXXXX" action="${ctx}/URL" method="post" class="breadcrumb form-search">
<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
<ul class="ul-form">
<li><label>屬性名稱 </label>
<form:select id="dddd" path="dddddd" class="input-xlarge required" itemValue="">
<form:option value="" id="" label="--請選擇--"></form:option>
<form:options items="${d}" itemValue="fdsfsdfds" itemLabel="fsffdfdsfs" ></form:options>
</form:select>
</li>
<li><label>媒介類型 </label>
<form:select id="ccc" path="cccccc" class="input-xlarge required" itemValue="">
<form:option value="" id="" label="--請選擇--"></form:option>
<form:options items="${cccccccccc}" itemValue="vvvvvvv" itemLabel="vvvvvvvvvvvvvv" ></form:options>
</form:select>
</li>
<li class="btns"><input id="btnQuery" class="btn btn-primary" type="button" value="查詢" onclick="cd()"/></li>
<li class="clearfix"></li>
</ul>
</form:form>
問題就出現在查詢按鍵上,因爲對於語言的不瞭解,本撥鼠在button上加了onclick事件,然後採用ajax進行數據的提交以及查詢,然後就導致了信息無法返回表單顯示。在這裏之前還踩過一個坑就是button類型我設置了submit,但是我又加了onclick事件。“歐,我的天吶,爲啥會有你這麼愚蠢的傢伙。“”
問題解決:
- 首先需要明白<form:form>標籤裏action屬性的含義,即如果查詢(此案中)按鈕如果爲submit,那麼點擊是按照action的請求執行的。明白這一步之後就可以進行下一步的debug了。
- 對button進行修改,如下
<li class="btns"><input id="btnQuery" class="btn btn-primary" type="submit" value="查詢"/></li>
主要修改地方就是講type改爲submit,刪掉onclick事件
3.接下來是controller層以及service層的事情了(在你dao層以及xml文件裏數據庫查詢語句已經解決的情況下)
在foreach中items是需要返回一個page數據的,所以在返回信息時查看一下自己這個地方是接收什麼類型的數據,然後對controller層以及service層進行編寫,否則會給自己留一個大坑
<table id="contentTable" class="table table-striped table-bordered table-condensed">
<thead>
<tr>
<th>屬性名稱</th>
</tr>
</thead>
<tbody>
<c:forEach items="${page.list}" var="dddd">
<tr>
<td>
${dddd.baseName}
</td>
</tr>
</c:forEach>
</tbody>
</table>
下面是controller層對應的代碼(XXXservice是創建的全局變量)
@RequestMapping(value="URL")
public String advanceSearch(String cc,String ccc,Model model,DDDDDD dddddd, HttpServletRequest request, HttpServletResponse response){
Page<MediaTypeAttribute> page =dddService.advanceSearch(cc,ccc,new Page<DDDDDD>(request, response), dddddd);
model.addAttribute("page",page);
return "頁面URL";
}
記住此處往頁面中添加的一定是page。註解不要加@ResponseBody
面對這個問題主要的坑大概就是文中提到的那幾個,若問題沒有得到解決可以評論區留言,看到即可回覆,小白們一起進步。