以下是我的jsp代码的一部分:
${cForm.cId} <!-- I can see this value displayed correctly --%>
<%! String i = ${cForm.cId}; %>
<td class="value">
<img src="/supportcenter/cServlet?sampleImg=<%=i %>" width="300px" />
</td>
cForm
是我的java对象文件,我可以在浏览器中看到${cForm.cId}
正确显示的值。
但是,当我想将值分配给String i
变量时,我会一直点击failed to compile :
jsp错误。
请告知。
答案 0 :(得分:4)
您不能在scriptlet中混合使用表达式语言。您应该仅使用scriptlet或仅使用表达式语言。
要修复当前错误,请从请求(或存储的任何位置)检索属性:
<% String i = ((CForm)request.getAttribute("cForm")).getId(); %>
要真正解决您的问题:stop using scriplets at all,请将其全部保存为表达式语言:
<img src="/supportcenter/cServlet?sampleImg=${cForm.cId}" width="300px" />
答案 1 :(得分:1)
编写scriptlet时,它只需要Java编程语言。所以,你不应该把EL放进去。您可以将值分配给页面范围属性并在scriptlet中获取它
<c:set var="cFormId" value=${cForm.cId}/>
<%
String i = (String)pageContext.getAttribute("cFormId");
%>
注意:使用Scriptlet是一种不好的做法。要解决您的问题,只需创建直接使用EL值的URL,而不必围绕灌木
<img src="/supportcenter/cServlet?sampleImg=${cForm.cId}" width="300px" />
答案 2 :(得分:1)
如果您只想在网址中添加额外的变量,则可以尝试此操作:
<td class="value">
<img src="/supportcenter/cServlet?sampleImg=${cForm.cId}" width="300px" />
</td>
答案 3 :(得分:0)
这是因为<%
表示Java代码的开始(一个scriptlet)。
${...}
标记(表达式语言)不能在<% ... %>
标记内使用。