Spring Boot MVC将JSP文件包含在另一个JSP文件中

时间:2018-12-18 03:06:51

标签: java spring-mvc spring-boot jsp

我有带有Spring Boot的Spring MVC,也为View使用了JSP文件。 我已经使用了JSP和JSTL库

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>

例如,我对JSP和JSTL语法没有问题

<c:set var="heading" scope="page" value="${0}" />

 <c:forEach var="menuGroup" items="${menuGroups}">
   <c:if test="${menuGroup.headingId != heading}">
       <c:if test="${menuGroup.headingIsDisplayed == 1}">
            <li class="menu-title text-white">${menuGroup.headingTitle}</li>
    </c:if> 
    <c:set var="heading" scope="page" value="${menuGroup.headingId}" />

 </c:if>

    <li class="has_sub">
     <a href="index.html" class="waves-effect">
        <i class="ti-home"></i>
        <span> ${menuGroup.menuGroupTitle}</span>
        <span class="pull-right"><i class="mdi mdi-chevron-right"></i> 
   </span>
    </a>

    <ul class="list-unstyled">

        <c:forEach var="menu" items="${menuGroup.menus}">

            <li><a href="${menu.menuPath}">${menu.menuTitle}</a></li>
        </c:forEach>

    </ul>
  </li>


 </c:forEach>

但是当我使用JSP Include标签

      <jsp:include page="sidemenu.jsp" flush="true"></jsp:include>

这是行不通的!,页面菜单中不包含sidemenu JSP文件中的内容,也完全没有错误消息。

是否缺少任何页面设置或配置? 或标签不能在Spring Boot MVC项目中使用??

3 个答案:

答案 0 :(得分:1)

首先,您需要找到sidemenu.jsp的实际路径。
然后,当包含它时,您必须使用此路径。像这样

<jsp:include page="../views/jsp/sidemenu.jsp" flush="true"/>

答案 1 :(得分:1)

以上应该可以正常工作。唯一的问题可能是sidemenu.jsp文件的位置。

因此,通过帮助查找要包含的jsp页面,尝试使用以下类似内容。

<jsp:include page="/WEB-INF/JSPs/header/navigation.jsp"></jsp:include>

OR

<jsp:include page="../sidemenu.jsp"></jsp:include> //如果是上一级目录

另请参阅include-jsps-file-from-another-folder

答案 2 :(得分:0)

您为什么不使用:<%@ include file=/included-file.jsp" %>