以下代码导致错误:
<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 代码。不相关
关于jsp - 在 Scriptlet 中访问 JSTL/EL 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19807156/