Struts2 tile问题

时间:2012-05-24 12:10:18

标签: struts2 tiles

我有像

这样的图块定义
<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" />

然而,这似乎不起作用。

知道如何做到这一点?

1 个答案:

答案 0 :(得分: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()的值。