0

レイアウト目的で jsp カスタム タグを作成しようとしています。

panelLayout.tagのようなファイルを作成しました

<%@ tag language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@ attribute name="heading" required="false" %>
<%@ attribute name="footer" fragment="true"%>

<div class="panel panel-default">

    <c:if test="${not empty heading}">
        <div class="panel-heading">
            <c:out value="${heading}"></c:out>
        </div>
    </c:if>

    <div class="panel-body">    
        <jsp:doBody/>                            
    </div>

    <div class="panel-footer">
        <jsp:invoke fragment="footer"/>
    </div>  
</div>

そして、私は以下のようにjspの1つでそれを使用しています

<%@taglib prefix="t" tagdir="/WEB-INF/tags" %>

<t:panelLayout>
    This is my body                            
   <jsp:attribute name="footer">
       This is my footer
   </jsp:attribute>
</t:panelLayout>

そして、私はエラーを下回っています

org.apache.jasper.JasperException: /WEB-INF/pages/Groups.jsp (line: 86, column: 33) jsp:attribute must be the subelement of a standard or custom action
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:443)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:89)
    org.apache.jasper.compiler.Parser.parseStandardAction(Parser.java:1126)
    org.apache.jasper.compiler.Parser.parseElementsScriptless(Parser.java:1499)
    org.apache.jasper.compiler.Parser.parseBody(Parser.java:1666)
    org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:986)
    org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1258)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1451)
    org.apache.jasper.compiler.Parser.parse(Parser.java:138)
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242)
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:374)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:341)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:662)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:364)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:263)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.64 logs.

フッターフラグメントを削除すると、正常に機能します。

ここから参照を得ました https://docs.oracle.com/cd/E19879-01/819-3669/bnamr/index.html

stackoverflow やその他のリファレンスも検索しましたが、私が間違っていたことを見つけることができませんでした。

どんな助けでも感謝します。

4

1 に答える 1