gpt4 book ai didi

java - 如何检查jsp文件是否包含在另一个jsp文件中?

转载 作者:行者123 更新时间:2023-11-30 09:44:40 24 4
gpt4 key购买 nike

看到你们都知道在jsp中包含文件...我有2个文件

一个.jsp二.jsp

在 two.jsp 中我有下面给出的代码

Long something = 0;

在one.jsp中的代码是

<%@include file='two.jsp'%>
<%@include file='two.jsp'%>

我包含了同一个文件两次,

所以会出现错误,因为会创建一些变量 2对吧?

所以这意味着在第二次包含文件之前我应该​​检查一下,如果一旦包含在内,我就不应该再包含它,如何检查那个?

在 php 中有类似的函数包括(“文件.php”);//这将包含文件

和include_once("文件.php");//如果之前没有包含文件,这将包含文件,

对此有任何解决方案吗????

最佳答案

确实,拥有这两个静态包含将导致相同变量声明两次的错误。这些导入在编译时会将包含页面的代​​码附加到包含页面中,然后一起编译。

我不知道有任何 include_once JSP 中内置的方法,但您可以通过全局 Set 来做类似的事情(即 HashSet ),声明为顶级页面中的变量,或声明为请求属性(您应该在处理结束时清除),您可以在其中添加已包含页面的名称。

一个.jsp

<% HashSet<String> pagesSet = new HashSet<String>(); %>
...
<%@include file='two.jsp'/>

two.jsp

<% if (!pagesSet.contains("two.jsp"){ %>
//... Remember to actually ADD two.jsp to pageSet,
// because it IS being included NOW.
pageSet.add("two.jsp");

// Entire contents of two.jsp
// ....
<% } %>

注意这与 #ifndef #define #endif 非常相似C 中的模式。

请注意,使用动态包含可以避免出现重复变量的问题。包含的页面将在其自己的范围内执行,要访问服务器端变量,您必须使用 <jsp:param> 传递它们。或 Request 之一, SessionApplication范围。有关静态和动态之间的差异,请参阅此问题的答案包括:include directive and attribute name problem

此外,如果您有大量的“条件”静态包含,您最终可能会遇到 64K method limit

关于java - 如何检查jsp文件是否包含在另一个jsp文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7783145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com