首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Struts Tiles 1-嵌套的tiles问题

Struts Tiles 1-嵌套的tiles问题
EN

Stack Overflow用户
提问于 2009-11-21 03:42:42
回答 4查看 5.8K关注 0票数 5

我正在成功地使用Struts tiles 1,但是我在尝试嵌套tiles时遇到了一个问题。

我目前的布局是这样的:

我希望有另一个这样的模板,用于相当多的用户页面:

因此,我希望为用户布局扩展第一个布局。在我使用的tiles定义中:

代码语言:javascript
复制
<definition name=".basic.layout" path="/WEB-INF/jsps/basicLayout.jsp">
    ....

<definition name=".user.layout" extends=".basic.layout">
    <put name="content" value="/WEB-INF/jsps/user/layout.jsp"/>
    ....

<definition name=".user.page" extends=".user.layout">
    <put name="userContent" value="/WEB-INF/jsps/user/page.jsp"/>
    ....

user/layout.jsp中,我通常会使用<tiles:get name="userContent"/>来显示磁贴。

问题是The requested resource (/WEB-INF/jsps/user/userContent) is not available

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-11-21 20:53:21

我在here上找到了一些信息

这个解决方案对我很有效。

在这种情况下,通常您必须在现有定义的基础上创建新的定义,在正确的模板中填充属性,并将新定义作为属性分配给主模板。

换句话说:

代码语言:javascript
复制
<definition name="product.nav" template="/productNavLayout.jsp">    
    <put-attribute name="productPathNav" value="/productPathNav.jsp" />    
    <put-attribute name="productNav" value="/productNav.jsp" />  
</definition> 

<definition name="product.nav.extended" extends="product.nav">    
    <put-attribute name="productContent" value="product.grid" />  
</definition> 

<definition name="page.products" extends="layout">
    <put-attribute name="content" value="product.nav.extended" />  
</definition>
票数 0
EN

Stack Overflow用户

发布于 2014-01-22 10:21:02

有一个cleaner solution

另一种方法是在tiles-def.xml文件中只使用一个定义(加上defaultLayout定义)。

tiles-def.xml

代码语言:javascript
复制
<definition name="defaultLayout" template="/WEB-INF/layout.jsp">
    <put name="header" value="/WEB-INF/header.jsp" />
    <!-- definitions based on this layout must define "body"  -->
    <put name="footer" value="/WEB-INF/footer.jsp" />
</definition>

<definition name="editPage" extends="defaultLayout">
    <put name="body" value="/WEB-INF/editBody.jsp" />
    <put name="a" value="/WEB-INF/a.jsp" />
    <put name="b" value="/WEB-INF/b.jsp" />
</definition>

layout.jsp

代码语言:javascript
复制
<tiles:insert attribute="header">
  <tiles:insert attribute="body" >
      <!-- propogate "a" and "b" down to the next level -->
      <tiles:put name="a" beanName="a"/>
      <tiles:put name="b" beanName="b"/>
  </tiles:insert>
<tiles:insert attribute="footer">

editBody.jsp

代码语言:javascript
复制
<table>
   <tr>
      <td><tiles:insert attribute="a"/></td>
      <td><tiles:insert attribute="b"/></td>
   </tr>
</table>

这种方法的缺点是layout.jsp必须知道(任何) body.jsp页面的可能参数列表。

票数 3
EN

Stack Overflow用户

发布于 2009-11-21 05:23:34

我使用Struts Tiles已经有很长一段时间了,但是您不应该使用而不是<tiles:get>

也就是说,类似于:

代码语言:javascript
复制
<tiles:insert attribute="userContent" flush="false"/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1772797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档