2011-09-29 68 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

相关问题