[JSP ] 關於變數宣告無法被EL讀取的問題

看板java作者 (Dolphin)時間16年前 (2009/12/17 18:57), 編輯推噓3(302)
留言5則, 2人參與, 最新討論串1/1
之前找到一個月曆的程式,試著把它從JSP改成與jstl並用的格式 但是卻發現以<%! ... %>宣告的變數(如String month[]) 在稍後的<body>內無法以${month[i]}的方式顯示在網頁上 原code為: <option value="${i}">${month[i]}</option> 最後出現的html原始檔為: <option value="0"></option> 請問為什麼會這樣? 又,有辦法以<c:set>的方式指定陣列型態的變數嗎? 希望前輩們能不吝解答,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.165.140.251

12/17 19:16, , 1F
先想一下為甚麼 i 用 EL 讀的到
12/17 19:16, 1F

12/17 19:22, , 2F
i是用<c:forEach>定義的,好像用JSTL自己的語法讀的到..吧
12/17 19:22, 2F

12/17 21:48, , 3F
突然覺得你的程式碼很詭異... =="
12/17 21:48, 3F

12/17 21:58, , 4F
建議你提供程式碼(其實是我忘記<%! 是幹麼的了)
12/17 21:58, 4F
抱歉,剛剛憑著記憶打的內容有些記錯了,詳細問題如下: 原code在此 ttp://www.webasp.net/article/17/16811.htm 我是想把 <% /*初始化表單*/ for (int i = 0; i < months.length; i++) { if (i == mm) out.print("<option selected value=January>"); else out.print("<option value="+months[i]+">"); out.print(months_cn[i]); out.print("</option>"); } %> 這段code改成 <c:forEach begin="0" end="11" var="i"> <c:choose> <c:when test="${i == mm}"><option selected value=January> </c:when> <c:otherwise> <option value=${months[i]}> </c:otherwise> </c:choose> ${months_cn[i]}</option> </c:forEach> 但是最後跑出來的下拉式選單變成全都是${months_cn[i]} 當然回去檢視原始碼也發現${months[i]}他也照單全收印出來了 就好像EL language不存在一樣,不知道是哪裡出錯了? ※ 編輯: KevinSh 來自: 118.165.140.251 (12/17 23:19)

12/18 08:20, , 5F
先把 EL 跟 JSTL 的基礎搞懂再來抄程式碼吧
12/18 08:20, 5F
文章代碼(AID): #1BAWwdwL (java)