java - 我可以将变量从 JSP scriptlet 传递给 JSTL,但不能从 JSTL 传递给 JSP scriptlet 而不会出错

标签 java jsp jstl scope scriptlet

以下代码导致错误:

 <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 , requestsession范围。你需要修改你的 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 , requestsession , 默认为 page .

更好的是,根本不要使用小脚本:它们会让小耶稣哭泣。

关于java - 我可以将变量从 JSP scriptlet 传递给 JSTL,但不能从 JSTL 传递给 JSP scriptlet 而不会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3570191/

相关文章:

java - Apache Tomcat JSP 应用程序的一般强化技巧

java - 在JSP中使用JPA,无法检索@ManyToOne映射实体的属性

java - 当导航栏打开时,MainActivity 仍然可点击

java - jmock-2.5.1.jar 与 jmock-junit3-2.5.1.jar

java - 用opencv java打开视频文件

javascript - 如何仅获取纯文本(字符串)来响应 Ajax url?

java.lang.IllegalArgumentException : Element not allowed

java - 图像 Servlet 不工作

java - Struts 2 选择带有数组列表值的标签

java - 使用 JSTL 调用对象方法