带有"包含"页面的jsp页面中的变量

Oma*_*eji 52 java jsp java-ee

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

我的理解是,一个包含的页面本质上是将verbatum复制到页面中,这将使我假设如果我在Parent jsp中声明了一个变量,它将在子节点中可用.

然而Eclipse抱怨这一点(可以理解的是,因为我可以将页面包含在任何页面中或者单独使用它们.当我尝试启动tomcat服务器时,它无法启动.

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

所以我想到了从每个子页面的会话中获取它们的想法,但是我想知道我是否可以给它们所有相同的变量名称,或者如果我必须为它们选择不同的变量名称每个页面都没有冲突.

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

Kri*_*ris 84

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

<%@include file="include.jsp"%>
Run Code Online (Sandbox Code Playgroud)

<jsp:include page="include.jsp" />
Run Code Online (Sandbox Code Playgroud)

如果您使用父宣布前者,那么任何变量JSP将在include.jsp(当然Eclipse将不会认为这是你猜测),因为它是由编译器有效地复制范围.

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

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

如果我使用前者,我更喜欢用.jspf后缀它们来表示JSP片段.我可以在片段文件中关闭一些日食警告.但总的来说,我试图避免使用该方法,而更喜欢第二种方法.

更多信息可以在这里的文档中找到:Include指令JSP include.


Dag*_*orj 7

如果要在页面路径中使用变量,请使用以下内容:

<% pageContext.include("/cities/" + (String) request.getAttribute("country_code") + ".jsp"); %>
Run Code Online (Sandbox Code Playgroud)