Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jsp页面中带有“的变量”;包括「;页_Java_Jsp_Jakarta Ee - Fatal编程技术网

Java jsp页面中带有“的变量”;包括「;页

Java jsp页面中带有“的变量”;包括「;页,java,jsp,jakarta-ee,Java,Jsp,Jakarta Ee,jsp页面中使用标记添加页面的变量的范围规则是什么 我的理解是,包含的页面基本上是逐字复制到页面中的,这将导致我假设,如果我在父JSP中声明了一个变量,那么它在子JSP中是可用的 但是Eclipse对此表示不满(这是可以理解的,因为我可以在任何页面中包含这些页面,或者将它们作为独立页面使用。当我尝试启动tomcat服务器时,它无法启动 我基本上想从父页面的会话中获取几个变量,然后在子页面中使用它们。这不起作用 所以我想到了在每个子页面中从会话中获取它们的想法,但是我想知道是否可以给它们所有相同的

jsp页面中使用标记添加页面的变量的范围规则是什么

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

但是Eclipse对此表示不满(这是可以理解的,因为我可以在任何页面中包含这些页面,或者将它们作为独立页面使用。当我尝试启动tomcat服务器时,它无法启动

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

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


另外,如果我在父jss中导入log4net,那么导入又如何呢?我还必须在子jss中导入它吗?

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

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


如果您使用前者,那么父JSP上声明的任何变量都将在include.JSP的作用域中(当然Eclipse不会像您猜测的那样看到),因为编译器会有效地复制它

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

导入同上。尽管在包含页面中冗余导入它们是安全的

如果我使用前者,我更喜欢用.jspf作为后缀来表示JSP片段。我可以关闭片段文件中的一些日食警告。但一般来说,我尽量避免使用该方法,而更喜欢第二种方法


更多信息可以在这里的文档中找到。

从面向对象的角度来看,我建议不要依赖于包含在child.jsp中的parent.jsp变量的范围。这是因为当我在jsp中包含一个片段时,我倾向于在许多不同的地方重用该片段。例如,如果我有一个child.jsp我可能希望在parent1.jsp和parent2.jsp中使用它。在这种情况下,最好不要使用变量继承。

如果希望在要包含的页面路径中使用变量,请使用以下命令:

<% pageContext.include("/cities/" + (String) request.getAttribute("country_code") + ".jsp"); %>

创建变量时,应将作用域设置为会话,否则,包含的页面将看不到它。 例如:

<logic:iterate id="supportTmp" name="publicites" indexId="indexLots" scope="session">                                    
    <c:set var="support" value="${supportTmp}" scope="session"/>
    <c:choose>
    <c:when test="${publiciteMoniteur == true}">
    <jsp:include page="/jsp/bodies/suiviEnvoiPubliciteMoniteurLigne.jsp" />
    </c:when>
    <c:otherwise>
        <jsp:include page="/jsp/bodies/suiviEnvoiPubliciteDefautLigne.jsp" />
    </c:otherwise>
</c:choose>
</logic:iterate>


如果变量在会话中,问题出在哪里?顺便问一下,你说的父页面会话是什么意思?变量是整数变量,因为我必须从会话中将它们设置为整数,然后将它们强制转换为整数,然后每次使用它们时都获取它们的int值。此外,检查是否为null,我试图通过不使用它们来减轻自己的一些痛苦必须通过声明一个局部变量来实现这一点。你会怎么做呢?我被这个例子弄糊涂了。也许Jasmper代码存在挑战?使用表单;当我尝试写入“include.JSP”中的字符串时,我会遇到运行时JSP编译器错误。我可以接受,可能不允许“向后”传递值--根据@include的规定规则,为什么会出现错误?请注意,中间有一个空格。您确定,这不是指请求范围吗?如果确定,jsp:included页面将看到您的变量。会话范围将创建一个值,该值将毫无理由地粘在会话中。
<logic:iterate id="supportTmp" name="publicites" indexId="indexLots" scope="session">                                    
    <c:set var="support" value="${supportTmp}" scope="session"/>
    <c:choose>
    <c:when test="${publiciteMoniteur == true}">
    <jsp:include page="/jsp/bodies/suiviEnvoiPubliciteMoniteurLigne.jsp" />
    </c:when>
    <c:otherwise>
        <jsp:include page="/jsp/bodies/suiviEnvoiPubliciteDefautLigne.jsp" />
    </c:otherwise>
</c:choose>
</logic:iterate>