2013-05-13 35 views
0

我在我的struts應用程序中使用了磁貼。 我漸漸錯誤,如org.apache.tiles.TilesException:在struts2中找不到屬性'header'

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> 

tiles.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版本。 我不知道確切的問題是什麼。 任何身體可以幫助嗎?

+0

您是否創建了Header.jsp並將它放置在正確的位置? – 2013-05-13 15:35:40

+0

是的,我創建了Header.jsp文件。我只把它放在正確的地方。 – harika 2013-05-14 10:18:29

回答

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>