jsp - 在 Scriptlet 中访问 JSTL/EL 变量

标签 jsp jstl el scriptlet

以下代码导致错误:

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

为什么我不能在 scriptlet 中使用表达式语言“${test}”?

最佳答案

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

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);
  %>  

But why that exception come to me.



JSP scriptlet用于包含对页面中使用的脚本语言有效的任何代码片段。 scriptlet 的语法如下:
<%
   scripting-language-statements
%>

当脚本语言设置为 Java 时,一个 scriptlet 被转换成一个 Java 编程语言语句片段,并被插入到 JSP 页面的 servlet 的服务方法中。

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

不相关
  • How to avoid Java Code in JSP-Files?
  • 关于jsp - 在 Scriptlet 中访问 JSTL/EL 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19807156/

    相关文章:

    java - 将很长的 URL 传递给 HTTPServletRequest

    jsp - JSP中通过超链接传递参数

    mysql - 将 JSTL SQL 结果转发给 Servlet

    java - JSTL fmt 不工作

    jsf - 使用JSF时是否强制初始化 "sub-objects"?

    java - 延迟 EL 未得到解决

    java - 如何在 Java 的应用程序属性文件中保存印地语字符?

    java - jsp 标记文件是否有 DTD 或 Schema 文件?

    jsp - JSP EL、JSF EL 和 Unified EL 之间的区别

    java - 当我在jsp端使用jSTL时如何分离 map 键