以下代码导致错误:
<c:set var="test" value="test1"/>
<%
String resp = "abc";
resp = resp + test;
pageContext.setAttribute("resp", resp);
%>
<c:out value="${resp}"/>
错误提示
"error a line 4: unknown symbol 'test'".
如何将 test
从 JSTL 代码传递到 JSP scriptlet?
最佳答案
脚本是嵌入在页面代码中的原始 java,如果您在脚本中声明变量,那么它们将成为嵌入在页面中的局部变量。
相比之下,JSTL 完全使用范围属性,无论是在 page
, request
或 session
范围。你需要修改你的 scriptlet 才能钓鱼 test
作为属性输出:
<c:set var="test" value="test1"/>
<%
String resp = "abc";
String test = pageContext.getAttribute("test");
resp = resp + test;
pageContext.setAttribute("resp", resp);
%>
<c:out value="${resp}"/>
如果您查看 <c:set>
的文档,你会看到你可以指定 scope
作为 page
, request
或 session
, 默认为 page
.
更好的是,根本不要使用小脚本:它们会让小耶稣哭泣。
关于java - 我可以将变量从 JSP scriptlet 传递给 JSTL,但不能从 JSTL 传递给 JSP scriptlet 而不会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3570191/