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

これに対する 1 つのアプローチ (別の方法があるかもしれません) は、アクション結果の場所での OGNL の使用と、タイル定義でのワイルド カードの使用を組み合わせることです。

次のアクションがあるとします。

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 に答える