2011-09-29 69 views
2

是否有可能像在Struts2中的struts.xml中那樣在tiles.xml中傳遞動態值?我已經使用$ {parameter}來獲取配置文件中的動態值,但它似乎不起作用。有任何想法嗎?是否有可能在Struts2中的tiles.xml中有動態值

+0

你是什麼意思的「動態值」?你想成爲什麼樣的動態人物? –

+0

我已經在攔截器中使用getter/setter設置了參數值,然後在瓷磚中使用了以下內容 每個客戶端都有不同的頭文件,所以我想提供這個id來指向正確的頭文件。這可能嗎? – zDroid

+0

爲什麼不像往常一樣訪問Free Marker模板中的值? –

回答

3

您可以將通配符傳遞給struts動作中的磁貼,我已經使用它來爲動態項目做類似的事情,其中​​每個客戶端可能都有不同的CSS文件。

在Struts動作你將有一個磚導致類型,你可以傳遞的價值,例如:

<action name="{eventURL}/update" class="org.groundworkgroup.struts.actions.admin.UpdateEventSettings"> 
    <result name="login" type="tiles">/login.tiles</result> 
    <result name="input" type="tiles">/admin.${#session.bean.pageID}.${#session.bean.fileID}.tiles</result> 
    <result name="success" type="tiles">/admin.${#session.bean.pageID}.${#session.bean.fileID}.tiles</result> 
</action> 

,然後在tiles.xml你「插入」通配符:

<definition name="/admin.*.*.tiles" extends="adminLayout"> 
    <put-attribute name="title" value="Welcome" /> 
    <put-attribute name="jsfile" value="{1}/js/{2}.js" /> 
    <put-attribute name="cssfile" value="{1}/css/{2}.css" /> 
    <put-attribute name="body" value="/WEB-INF/content/sites/admin/main.jsp" /> 
    <put-attribute name="menu" value="/WEB-INF/content/sites/admin/menu.jsp" /> 
</definition> 

在此特定示例中,struts動作pageID是文件所在的項目目錄,並且在tiles.xml中將其作爲通配符{1}進行放置。 fileID是與由{2}在tiles.xml中表示的此特定操作或用戶關聯的文件名。您可以使用此設置將動態值傳遞到您的圖塊,以便控制例如頁面狀態或JSP的渲染,或者在此示例中控制自定義css和js文件。

+0

似乎可能會工作,但有一個問題..我應該發送參數到模板..即在你顯示它延長了adminLayout的瓷磚代碼。我想將值發送到該adminLayout。我怎麼做?任何想法。 – zDroid

+0

這就是我的adminLayout的樣子。 zDroid

+0

我使用了viewpreparer,它工作。我想知道是否有可能像tomcat/shared文件夾中的html一樣訪問我的web-app文件。如果是,那麼當我將一個文件放入tomcat的共享文件夾時,我將不得不重新啓動tomcat? – zDroid

相關問題