1

我有一个瓷砖定义,如

<definition name="tasks" template="/jsp/layout/layout.jsp">
    <put-attribute name="header" value="/jsp/layout/header.jsp"/>
    <put-attribute name="nav" value="/jsp/layout/navigation.jsp"/>
    <put-attribute name="menu" value="/jsp/task/menu.jsp#ShowUser" />
</definition>

我想在属性的值中添加一个锚点,这个锚点需要根据控制器设置的属性进行设置。例如

<put-attribute name="menu" value="/jsp/task/menu.jsp#ShowUser" />

但是,这似乎不起作用。

知道如何做到这一点吗?

4

1 回答 1

0

解决此问题的一种方法(可能还有另一种方法?)是结合在您的操作结果位置使用 OGNL 和在您的 Tile 定义中使用通配符。

假设我有这个动作:

public class DynamicTileAction {

   MyModel model

   public String execute() { 
      return "success"; 
   }

   public MyModel getModel() { 
      return this.model; 
   }

   //other code...

}

这个结果定义:

<result name="success" type="tiles">dynamic.tile.${model.someField}</result>

然后在tiles.xml中我可以这样做:

<definition name="dynamic.tile.*">
    <put-attribute name="dynamicField" value="{1}" />
</definition>

或者,您可以使用它来动态包含 JSP:

<definition name="dynamic.tile.*">
    <put-attribute name="content" value="/WEB-INF/content/dynamic/{1}.jsp" />
</definition>

然后,您{1}在上面看到的每个地方都将等于 的值getModel().getSomeField()

于 2012-05-24T21:46:21.057 回答