【问题标题】:include a JSP file in another with cases在另一个案例中包含一个 JSP 文件
【发布时间】:2014-08-08 23:30:19
【问题描述】:

如何在另一个具有 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"%>


        <%}} %> 

【问题讨论】:

  • 是的,我相信你可以
  • 是的,但是通常 jsp 页面中的 java 代码是不好的 :) 呢? P.s,也许你想使用 "ADMIN".equals()
  • 好的,但是如何使用 ??
  • 当我尝试使用 我有一个错误“未知标签”,我已经添加了 jstl 和标准库!!!!!!! PLZ帮助

标签: java jsp if-statement


【解决方案1】:

如果您只想使用&lt;c:if&gt;,您必须有一个作用域 变量。当前请求的属性、应用程序上下文的会话的属性分别是请求、会话和应用程序。

您可以轻松地将变量放在页面上下文中(仅对当前 jsp 有效,以及 @include 包含的其他变量,但 &lt;jsp:include&gt; 不包含):

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

但如果你想进行许多独占测试,正确的标签是&lt;c:choose&gt;

<%
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>

我刚刚测试过它可以工作(在我的机器上......), else 子句可以解释为什么你没有得到你想要的。

【讨论】:

  • 我试图添加作用域变量,但它不起作用我有一个错误,方法 addAttributes 没有为 pageContext 类型定义
  • @SalimaLifri 对不起,我写了addAttribute,而我的意思是setAttribute - 已编辑
  • 我这样做时没有错误,但它也不能解决问题:(
  • 你能解释一下接下来会发生什么吗?
  • 根据变量测试,它没有显示我想要包含的页面。
【解决方案2】:

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

&lt;jsp:include page="menu.jsp" flush="true"/&gt; 是动态包含的,因此,menu.jsp 页面实际上只有在满足条件时才会被调用。但另一方面menu.jsp必须是整页,而不是页面片段,并且不能使用“父”页中定义的变量。

所以,这真的取决于你想要实现什么。

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

【讨论】:

    【解决方案3】:

    您可以使用&lt;jsp:include page="menu.jsp" flush="true"/&gt; 将页面包含在jsp 中,进行条件检查。

    如果您不使用 jstl 并尝试在 statut 值为 ADMIN 或 USER 时包含 menu.jsp,您可以这样做:

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

    注意menu.jsp应该在你当前jsp的同一个文件夹中,否则给出相对路径。

    【讨论】:

    • 我的条件可以放在哪里??
    【解决方案4】:

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

    <%
        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"%>
    
    
        <%}} %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-18
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      • 2015-09-27
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多