将java对象文件值分配给jsp变量

时间:2014-05-12 04:28:47

标签: java jsp variables object assign

以下是我的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错误。

请告知。

4 个答案:

答案 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)。

${...}标记(表达式语言)不能在<% ... %>标记内使用。