0

我在我的 struts 应用程序中使用了瓷砖。我遇到了类似的错误

Servlet.service() for servlet [jsp] in context with path [/Sample_Struts2] threw exception [javax.servlet.ServletException: javax.servlet.jsp.JspException: Error executing tag: Attribute 'header' not found.] with root cause

struts.xml

 <package name="tiles-sample" extends="tiles-default">
<result-types>
    <result-type name="tiles"
        class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>

<action name="*Link" method="{1}" class="com.sample.TilesAction">
    <result name="welcome" type="tiles">welcome</result>
    <result name="friends" type="tiles">friends</result>
    <result name="office" type="tiles">office</result>
</action>

web.xml

    <context-param>
       <param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
       <param-value>/WEB-INF/tiles.xml</param-value>
   </context-param>   

   <listener>
        <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
   </listener>   

   <filter>
      <filter-name>struts2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
   </filter>

   <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>

瓷砖.xml

<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
   "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">

<tiles-definitions>
    <definition name="helloWorld" template="/TilesSample.jsp">
      <put-attribute name="header" value="/Header.jsp"/>
      <put-attribute name="menu" value="/Menu.jsp"/>
      <put-attribute name="body" value="/HelloWorld.jsp"/>
      <put-attribute name="footer" value="/Footer.jsp"/>    

   </definition>
</tiles-definitions>

TileSample.jsp

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<body>
    <table border="1" cellpadding="2" cellspacing="2" align="center">
        <tr>
            <td height="30" colspan="2"><tiles:insertAttribute name="header" />
            </td>
        </tr>
        <tr>
            <td height="250"><tiles:insertAttribute name="menu" /></td>
            <td width="350"><tiles:insertAttribute name="body" /></td>
        </tr>
        <tr>
            <td height="30" colspan="2"><tiles:insertAttribute name="footer" />
            </td>
        </tr>
    </table>
</body>
</html>

并记录错误

org.apache.tiles.jsp.taglib.RoleSecurityTagSupport doEndTag
SEVERE: Error executing tag: Attribute 'header' not found.
org.apache.tiles.TilesException: Attribute 'header' not found.
    at org.apache.tiles.jsp.taglib.InsertAttributeTag.render(InsertAttributeTag.java:112)
    at org.apache.tiles.jsp.taglib.RenderTagSupport.execute(RenderTagSupport.java:154)
    at org.apache.tiles.jsp.taglib.RoleSecurityTagSupport.doEndTag(RoleSecurityTagSupport.java:75)
    at org.apache.tiles.jsp.taglib.ContainerTagSupport.doEndTag(ContainerTagSupport.java:80)
    at org.apache.jsp.Tiles_jsp._jspx_meth_tiles_005finsertAttribute_005f0(Tiles_jsp.java:115)
    at org.apache.jsp.Tiles_jsp._jspService(Tiles_jsp.java:67)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

我正在使用 struts 2.3.1.2 版本。我不知道确切的问题是什么。任何机构都可以帮助这个吗?

4

1 回答 1

1
in struts.xml : 

<action name="*Link" method="{1}" class="com.sample.TilesAction">
    <result name="welcome" type="tiles">helloWorld</result>
    <result name="friends" type="tiles">friends</result>
    <result name="office" type="tiles">office</result>
</action>

in tile.xml 

<definition name="helloWorld" template="/TilesSample.jsp">
    <put-attribute name="header" value="/Header.jsp"/>   
      <put-attribute name="menu"   value="/Menu.jsp"/>
      <put-attribute name="body"   value="/Body.jsp"/>
      <put-attribute name="footer"   value="/Footer.jsp"/>
  </definition> 

<definition name="friend" extends="helloWorld">   
      <put-attribute name="header" value="/Header1.jsp"/>   
      <put-attribute name="menu"   value="/Menu1.jsp"/>
      <put-attribute name="body"   value="/Body1.jsp"/>
      <put-attribute name="footer"   value="/Footer1.jsp"/>
  </definition>  
<definition name="office" extends="helloWorld">   
      <put-attribute name="header" value="/Header2.jsp"/>   
      <put-attribute name="menu"   value="/Menu2.jsp"/>
      <put-attribute name="body"   value="/Body2.jsp"/>
      <put-attribute name="footer"   value="/Footer2.jsp"/>
  </definition>  
于 2013-07-17T05:38:45.183 回答