在另一个案例中包含一个JSP文件

时间:2014-08-08 23:30:19

标签: java jsp if-statement

如何在具有IF结构的另一个JSP中包含JSP页面:

我可以在JSP文件中使用这部分代码:

<%
        UtilisateurAction useraction = new UtilisateurAction();
        String statut = useraction.Connect();
        //System.out.println(statut);

        if(statut=="ADMIN"){
      %>    <%@ include file="menu.jsp"%>

       <%} 

        else {if(statut=="USER"){%>
            <%@ include file="menu.jsp"%>


        <%}} %> 

4 个答案:

答案 0 :(得分:1)

<%@ include file="menu.jsp"%>是静态包含,因此无论条件如何,它都将包含menu.jsp的内容。但只有条件为真时才会执行。

<jsp:include page="menu.jsp" flush="true"/>是动态包含的,因此,只有满足条件才会实际调用menu.jsp页面。但是从另一方menu.jsp必须是一个完整的页面,而不是一个页面片段,并且不能使用在父母&#39;中定义的变量。页。

所以,这实际上取决于你想要达到的目标。

正如Marco建议的那样,您应该使用"ADMIN".equals(statut)代替==

答案 1 :(得分:1)

如果您只想要使用<c:if>,则必须拥有范围变量。当前请求的属性,应用程序上下文的会话各自的范围是请求,会话和应用程序。

您可以轻松地将变量放在页面上下文中(仅对当前jsp有效,而@include包含的其他内容有效,但<jsp:include>不包含):

<%
...
String statut = useraction.Connect();
pageContext.setAttribute("statut", statut);
%>
<c:if test="${statut == 'ADMIN'}">
...
</c:if>

但是如果你想对许多人进行排他性测试,那么正确的标签是<c:choose>

<%
String statut = useraction.Connect();
pageContext.setAttribute("statut", statut);
%>
<c:choose>
    <c:when test="${statut eq 'ADMIN'}">
        ...
    </c:when>
    <c:when test="${statut == 'USER'}">
        ...
    </c:when>
    <c:otherwise>
        <p>Status ${statut} not found</p>
    </c:otherwise>
</c:choose>

我刚测试过它(在我的机器上......),而其他条款可以解释为什么你没有得到你想要的东西。

答案 2 :(得分:0)

在条件检查中,您可以使用<jsp:include page="menu.jsp" flush="true"/>在jsp中包含页面。

如果您没有使用jstl并且在法定值为ADMIN或USER时尝试包含menu.jsp,则可以这样做:

<% if (statut.equals("ADMIN") || statut.equals("USER")) { %>
          <jsp:include page="menu.jsp" flush="true"/>
<% }%>

请注意,menu.jsp应与当前jsp位于同一文件夹中,否则为相对路径。

答案 3 :(得分:0)

所以我必须使用。 我想要的是根据法定值包含不同的页面。

<%
    UtilisateurAction useraction = new UtilisateurAction();
    String statut = useraction.Connect();
    //System.out.println(statut);

    if(statut=="ADMIN"){
  %>    <%@ include file="menu.jsp"%>

   <%} 

    else {if(statut=="USER"){%>
        <%@ include file="menuother.jsp"%>


    <%}} %>