畢設筆記--SSH前臺JSP頁面下拉列表框的值從資料庫動態獲取
阿新 • • 發佈:2019-02-18
今天的遇到的一個問題是:我想在前臺JSP頁面中做一個下拉列表框,
而這個列表框中顯示的值是從資料庫的一張表中動態獲取的。
比如,表中有北京,上海,廣州這三個資料,JSP的下拉框中顯示的也是這三個值。
以後再表中新增了杭州,下拉框就相應的顯示這四個城市。
對,就是這麼簡單的一個問題搞了我一上午。。。
-------------------------------------------------------------------------
之後在JSP中,可以用request.getAttribute("XXX")獲得這裡儲存的list
3.3 下拉列表框的寫法:
PS. 3.2中的最後一句千萬要寫。用<c:forEach>這個標籤時的資料來源就是這個???
而這個列表框中顯示的值是從資料庫的一張表中動態獲取的。
比如,表中有北京,上海,廣州這三個資料,JSP的下拉框中顯示的也是這三個值。
以後再表中新增了杭州,下拉框就相應的顯示這四個城市。
對,就是這麼簡單的一個問題搞了我一上午。。。
-------------------------------------------------------------------------
這個應當是在JSP頁面載入的時候,下拉列表框就已經有值了。
這些值必然是要從後臺取的,寫在後臺的action中。
1. 在JSP的body標籤裡面的第一句,加上
<pre name="code" class="html"><body> <s:action name="loadDistrict" namespace="/"></s:action>
這是Struts用來呼叫action的標籤,name屬性要在struts.xml中有定義。
比如我的struts.xml中是這樣寫的:
<action name="loadDistrict" class="com.edu.zjut.action.LoadDistrictInfoAction"> <result name="success">/jsp/college/addCollegeInfo.jsp</result> <result name="error">/jsp/college/addCollegeInfo.jsp</result> <result name="input">/jsp/college/addCollegeInfo.jsp</result> </action>
這裡用service獲取資料庫表中的所有區域資訊之後,(是儲存在一個list中的),將這個list儲存在request中</pre><p>表示從資料庫取值的程式碼寫在 LoadDistrictInfoAction.java這個類中。</p><p>addCollegeInfo.jsp就是我最終要展示下拉框的頁面。</p><p>在呼叫的 LoadDistrictInfoAction.java這個類的方法了之後,不管結果怎樣,都會跳到addCollegeInfo.jsp頁面。</p><p></p><p>2. LoadDistrictInfoAction.java 類中的寫法。</p><p>因為專案用的是SSH框架,所以所有層都需要用Spring管理。</p><p>進入action呼叫的方法程式碼:</p><p><pre name="code" class="html">public String execute() { HttpServletRequest request = ServletActionContext.getRequest(); ArrayList districtList = districtService.getAllDistrictInfos(); request.setAttribute("districtList", districtList); return "success"; }
之後在JSP中,可以用request.getAttribute("XXX")獲得這裡儲存的list
3. addCollegeInfo.jsp JSP頁面的寫法
3.1 最開頭需要匯入list的包:
<%@page import="java.util.ArrayList"%>
引入這兩個標籤庫:
<pre name="code" class="html"><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
第一個標籤庫是後面遍歷list時用<c:forEach>會用到,第二個標籤庫是在前面<s:action>會用到
3.2 JSP中嵌入Java程式碼的寫法:
<%
ArrayList listCode = (ArrayList<DistrictInfo>)request.getAttribute("districtList") ; //把之前在action類中set的list取出來
List newList = new ArrayList<DistrictInfo>();
for(int i=0; i<listCode.size(); i++){
//System.out.println("地區:" +i+ ( (DistrictInfo)listCode.get(i) ).getName());
newList.add( (DistrictInfo)listCode.get(i) );
}
request.setAttribute("disList", newList); //這裡set是後面<c:forEach>標籤會用到
%>
3.3 下拉列表框的寫法:
<div>
<label>所在區域:</label>
<div class="col-sm-8">
<select name="collegeDistrictId" id="collegeDistrictId">
<c:forEach items="${disList}" var="item">
<option value="${item.districtId}">${item.name}</option>
</c:forEach>
</select>
</div>
</div>
PS. 3.2中的最後一句千萬要寫。用<c:forEach>這個標籤時的資料來源就是這個???