1. 程式人生 > >JSP踩坑 IDEA中解決JSP頁面cannot resolve method setAttribute("")

JSP踩坑 IDEA中解決JSP頁面cannot resolve method setAttribute("")

我的媽/微笑

踩坑原來是這麼個感受,這麼多小時解決不了問題,呵呵

在一個專案中,我要在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.jarjsp-api.jar這兩個包。

這兩個jar包是是tomcat自帶的,因此在Project Structure中,選擇Library–>Application Server Libraries

–>Tomcat 8.5

將這個引入後,就會匯入缺少的包,過幾秒中,包載入進來,就可以使用request.setAttribute()了!