Tiles1 - 将属性传递给 jsp 部分



>我有一个非常基本的磁贴1设置,包括标题,菜单和内容,如下所示:

<definition name="Main" path="/WEB-INF/jsp/MainLayout.jsp">
    <put name="header" value="/WEB-INF/jsp/Header.jsp"/>
    <put name="menu" value="/WEB-INF/jsp/Menu.jsp"/>
    <put name="content" value=""/>
</definition>

我所有的子页面都扩展了这个定义,并为内容部分提供了一个jsp:

<definition name="SearchPage" extends="Main">
    <put name="content" value="/WEB-INF/jsp/Search.jsp"/>
</definition>

我正在寻找一种让上面的 SearchPage 定义"放置"属性的方法,以便它可以在 Search.jsp 中使用。我的第一次尝试是:

<definition name="SearchPage" extends="Main">
    <put name="content" value="/WEB-INF/jsp/Search.jsp"/>
    <put name="showOptions" value="true" type="string"/>
</definition>

但在这种情况下,showOptions 属性仅适用于 MainLayout.jsp不会传递给 Search.jsp。我知道有一些方法可以通过布局页面中的 useAttribute 显式传递它,但我非常想避免布局页面需要知道我可以在子页面中使用的每个变量。

:注:在tiles2中,似乎有一个漂亮的cascade="true"属性,它完全符合我的需求,但不幸的是,我认为我被tiles1困住了。


不错的单行修复,感谢格里菲狗:

在 MainLayout 中.jsp将所有磁贴属性导入到请求范围。然后,它们可用于所有子页面(注意名称冲突)。

<tiles:importAttribute scope="request"/>

我还找到了一种替代方法,该方法使用具有必要属性的定义作为内容而不是 jsp 页面:http://wiki.apache.org/struts/StrutsDocTiles(解决方案 #1)

您可以使用tiles:importAttribute并指定作用域,例如 request 。在您的主布局中执行此操作,然后您应该能够在搜索页面中访问它。

最新更新