是否可以在Struts2中的tiles.xml中使用动态值

时间:2011-09-29 15:53:23

标签: struts2

是否可以像在Struts2中的struts.xml中那样在tiles.xml中传递动态值?我使用$ {parameter}来获取配置文件中的动态值,但它似乎没有用。有任何想法吗?

1 个答案:

答案 0 :(得分:3)

你可以从struts动作将通配符传递给tile,我已经用它来为动态项目做类似的事情,例如每个客户端可能有不同的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文件。