一尘不染

我可以将变量从JSP脚本传递到JSTL,但不能从JSTL传递到JSP脚本,而不会出现错误

jsp

以下代码导致错误:

 <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?


阅读 243

收藏
2020-06-08

共1个答案

一尘不染

脚本是嵌入在页面代码中的原始Java,如果您在脚本中声明变量,那么它们将成为嵌入在页面中的局部变量。

相比之下,JSTL工作完全与范围属性,无论是在pagerequestsession范围。您需要重新编写脚本以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>,您将看到您可以指定scopepagerequest或者session,它默认为page

更好的是,根本不要使用scriptlet:它们会使婴儿耶稣哭泣。

2020-06-08