web.xml:
<init-param>
      <param-name>definitions-config</param-name>
      <param-value>>/WEB-INF/tiles-defs.xml</param-value>
    </init-param> 
<jsp-config>
   <taglib>
   <taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
   <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
   </taglib></jsp-config>struts-config.xml<action-mappings>
   <action path="/Welcome" forward="/welcomeStruts.jsp"/>  
  
   <action path="/login"
   input="/Inbox.jsp"
   type="com.frontier.action.doTiles">
  
   </action>
  
   <action path="/test"
   input="/Inbox.jsp"  
   scope="request" 
           type="com.frontier.action.doTiles" 
           validate="true">
      <forward name="success" path="eat.test"></forward>
    </action>
           
  </action-mappings>  <message-resources parameter="com.seagate.calib.struts.ApplicationResources" />
  
  
  <!-- =============== tiles plugin ============== -->
  <plug-in className="org.apache.struts.tiles.TilesPlugin" >
        <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />  
        <set-property property="definitions-parser-validate" value="true"/>    
        <set-property property="moduleAware" value="true" />
        <set-property property="extends" value="true"/>
  </plug-in>tiles-defs.xml:<tiles-definitions>        
    <definition name="login" extends="mainlayout">
        <put name="body" value="/WEB-INF/login/login.jsp"/>
    </definition>
    
    <definition name="eat.test" path="/WEB-INF/layout/layout.jsp">
        <put name="header" value="header"/>
        <put name="topbar" value="topbar"/>
        <put name="menu" value="menu"/>
        <put name="body" value="/WEB-INF/test/test.jsp"/>
        <put name="footer" value="footer"/>
    </definition>
    
    <definition name="mainlayout" path="/WEB-INF/layout/layout.jsp">
        <put name="header" value="header"/>
        <put name="topbar" value="topbar"/>
        <put name="menu" value="menu"/>
        <put name="body" value="/WEB-INF/layout/body.jsp"/>
        <put name="footer" value="footer"/>
    </definition>
    
    <definition name="footer" path="/WEB-INF/layout/footer.jsp"/>
    <definition name="header" path="/WEB-INF/layout/header.jsp"/>
    <definition name="menu" path="/WEB-INF/layout/menu.jsp"/>
    <definition name="topbar" path="/WEB-INF/layout/topbar.jsp"/>
    
    
    
    <definition name="${YOUR_DEFINITION_HERE}">
    </definition></tiles-definitions>
问题: 运行http://localhost:7001/edcs/Calibration/login.do  和http://localhost:7001/edcs/Calibration/test.do 
     没有任何显示(页面为空显示)

解决方案 »

  1.   

    edcs/Calibration ?分别是什么 ??
    http://localhost:7001/edcs/Calibration/login.do   只带项目名就好了。 .不要带路径 
    如项目名是edcs 则:
    http://localhost:7001/edcs/login.do
      

  2.   

    Struts中Tilts标记的使用
    以前写的一篇文章 .希望对你有所帮助 ..
      

  3.   

    edcs/Calibration 是ContextPath这个没有问题的.直接goto:http://localhost:7001/edcs/Calibration/index.jsp是没有问题的
      

  4.   

    4floor大师,blog上面介绍的都看了.但是没能解决我的问题.上面写的太少啊.
      

  5.   

    1  <action forward="eat.test" path="/login1" /> ------> 不行,服务器中出现以下异常
    2  <action forward="/WEB-INF/layout/menu.jsp" path="/login2" />
    ------可以,显示正常
    3  action path="/test"
       input="/Inbox.jsp"  
       scope="request" 
               type="com.frontier.action.doTiles" 
               validate="true">
          <forward name="success" path="eat.test"></forward>
        </action>----什么都不显示,也没有异常出现.

    java.lang.NullPointerException
    at org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
    at org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
    at org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
    at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3231)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2002)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1908)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1362)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
      

  6.   


    通过action-mappings配置你的tiles组件: 
    <action-mappings> 
      <action path="/index" type="org.apache.struts.actions.ForwardAction"  
         parameter="index-definition"> 
      </action> 
    </action-mappings> 来自
    所以上面应该是:
     <action path="/test" 
      input="/Inbox.jsp"  
      scope="request" 
              type="com.frontier.action.doTiles" 
              validate="true"
              parameter="eat.test"> 
      </action> 
    好久没用..我也忘得差不多了。 .希望对你有用 ...