JSP踩坑 IDEA中解決JSP頁面cannot resolve method setAttribute("")
阿新 • • 發佈:2018-11-10
我的媽/微笑
踩坑原來是這麼個感受,這麼多小時解決不了問題,呵呵
在一個專案中,我要在jsp頁面中使用SpringMVC<from:form>
表單標籤解析一個性別gender的的radiobuttons。
程式碼如下:
<% Map<String,String> genders = new HashMap<>(); genders.put("1","Male"); genders.put("0","Female"); %> Gender:<form:radiobuttons path="gender" items="${genders}" />
- 1
- 2
- 3
- 4
- 5
- 6
但是執行出錯了,提示的錯誤資訊是:
java.lang.IllegalArgumentException: 'items' must not be null
- 1
也就是說items="${genders}
沒有取到資訊,也就是說我再jsp頁面中寫的java程式碼genders
沒有獲取到。
解決方法是將genders
資訊加入到請求域中,通過request.setAttribute()
方法。jsp
<% Map<String,String> genders = new HashMap<>(); genders.put("1","Male"); genders.put("0","Female"); request.setAttribute("genders",genders); %>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
但是重點來了! setAttribute
這幾個字母是紅色的,也就是說壓根沒有識別到是這個方法。
IDEA也提示:cannot resolve method setAttribute("")
而相同的程式碼在Eclipse中就沒有錯誤。排除了頁面中import的錯誤後,我懷疑是缺少包。
那且少什麼包呢? 是servlet-api.jar
和jsp-api.jar
這兩個包。
這兩個jar包是是tomcat自帶的,因此在Project Structure
中,選擇Library
–>Application Server Libraries
–>Tomcat 8.5
將這個引入後,就會匯入缺少的包,過幾秒中,包載入進來,就可以使用request.setAttribute()了!