一尘不染

在Scriptlet中访问JSTL / EL变量

jsp

以下代码导致错误:

<c:set var="test" value="test1"/>
<%
    String resp = "abc"; 
    resp = resp + ${test};  //in this line I got an  Exception.
    out.println(resp);
%>

为什么小脚本中不能使用表达语言“ $ {test}”?


阅读 404

收藏
2020-06-08

共1个答案

一尘不染

JSTL变量实际上是属性,默认情况下在页面上下文级别范围内。
因此,如果您需要在scriptlet中访问JSTL变量值,则可以通过getAttribute()在适当范围的对象(通常是pageContextrequest)上调用方法来实现。

resp = resp + (String)pageContext.getAttribute("test");

完整代码

 <c:set var="test" value="test1"/>
 <%
    String resp = "abc"; 
    resp = resp + (String)pageContext.getAttribute("test");   //No exception.
    out.println(resp);
  %>

但是为什么那个例外来到我这里。

一个JSP脚本用于包含任何代码片段是有效的页面中使用的脚本语言。脚本的语法如下:

<%
   scripting-language-statements
%>

当脚本语言设置为Java时, 脚本小程序将转换为Java编程语言语句片段,并将其插入JSP页面的servlet的服务方法中。

您可以在scriptlet中编写Java代码,${test}而不能编写Java代码。


2020-06-08