java - "included"页面的jsp页面中的变量

标签 java jsp jakarta-ee

使用标签添加页面的jsp页面中变量的作用域规则是什么?

我的理解是,包含的页面本质上是逐字复制到页面中的,这将导致我假设如果我在父 JSP 中声明了一个变量,那么它将在子 JSP 中可用。

但是 Eclipse 对此提示(可以理解,因为我可以将页面包含在任何页面中或单独使用它们。当我尝试启动 tomcat 服务器时,它无法启动。

我基本上想从父页面的 session 中获取几个变量并在子页面中使用它们。这不起作用。

所以我想到了从每个子页面的 session 中获取它们的想法,但是我想知道是否可以给它们所有相同的变量名,或者我是否必须选择不同的变量名为他们在每一页中,这样他们就不会发生冲突。

如果我在父 jss 中导入 log4net,我还需要在子 jss 中导入它吗?

最佳答案

在 JSP 中有两种方法可以包含其他 jsp 页面。

<%@include file="include.jsp"%>

<jsp:include page="include.jsp" />

如果您使用前者,那么在父 JSP 上声明的任何变量都将在 include.jsp 的范围内(当然 Eclipse 不会像您推测的那样看到这一点),因为它被编译器有效地复制了。

如果您使用第二种方法,则包含在运行时完成,并且包含页面有自己的范围。

同样适用于进口。尽管在包含页面中冗余导入它们是安全的。

如果我使用前者,我更喜欢在它们后面加上 .jspf 来表示 JSP 片段。我可以关闭片段文件中的一些 Eclipses 警告。但总的来说,我尽量避免使用这种方法,而更喜欢第二种方法。

可以在此处的文档中找到更多信息:Include directiveJSP include .

关于java - "included"页面的jsp页面中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/943770/

相关文章:

java - 在 Spring 从数据库填充下拉列表

html - 我们如何在 JSTL 中迭代 HashMap?

jakarta-ee - 如何使用 ServletOutputStream 更快地写入文件内容

mysql - 具有默认持久性提供程序的 ClassNotFoundException weblogic.jdbc.wrapper.JTSConnection?

java - 从 J2EE 服务器访问 COM 接口(interface)的最佳方式是什么?

java - ListFragment IllegalStateException : “The content of the adapter has changed but ListView did not receive the notification”

java - 为什么单元格值即使有内容也会返回为空字符串?

java - 是否可以在 Windows 10 中获得较旧的 Windows 版本外观?

java - 为什么要使用 getter 和 setter/accessors?

java - 如何将 JSTL 变量与 JSP id 连接起来?