作者KevinSh (Dolphin)
看板java
标题[JSP ] 关於变数宣告无法被EL读取的问题
时间Thu Dec 17 18:57:38 2009
之前找到一个月历的程式,试着把它从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
1F:推 PsMonkey:先想一下为甚麽 i 用 EL 读的到 12/17 19:16
2F:→ KevinSh:i是用<c:forEach>定义的,好像用JSTL自己的语法读的到..吧 12/17 19:22
3F:推 PsMonkey:突然觉得你的程式码很诡异... ==" 12/17 21:48
4F:→ PsMonkey:建议你提供程式码(其实是我忘记<%! 是干麽的了) 12/17 21:58
抱歉,刚刚凭着记忆打的内容有些记错了,详细问题如下:
原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)
5F:推 PsMonkey:先把 EL 跟 JSTL 的基础搞懂再来抄程式码吧 12/18 08:20