为Struts 2中的特定操作映射配置SiteMesh?

时间:2009-08-11 10:45:30

标签: java struts2 sitemesh

我正在尝试将sitemesh配置为仅对我的Struts 2应用程序中的某个动作映射子集生效。

比如说,我有以下struts.xml片段:

<package name="default" namespace="/" extends="struts-default">
  <action name="showForm">
    <result>/view/form.jsp</result>
  </action>
</package>
<package name="widgets" namespace="/widgets" extends="struts-default">
  <action name="showForm">
    <result>/view/form.jsp</result>
  </action>
</package>

我希望“/showForm.action”的输出由SiteMesh修饰,但是“/widgets/showForm.action”将返回为空。这里的关键部分是我希望JSP文件可以被两个动作映射重用。

但是尽可能地尝试,我似乎无法获得SiteMesh的标签来识别映射。我必须指定要排除的文件“/view/form.jsp”,这意味着我将无法重用JSP文件。

有什么方法可以解决这个问题吗?

我正在使用Struts 2.0.14。

谢谢, 黄

1 个答案:

答案 0 :(得分:1)

Using SiteMesh with RequestDispatcher's forward()相同的答案。您可以更改sitemesh过滤器映射到传入请求的方式。

我想你想要:

<filter-mapping>
    <filter-name>sitemesh</filter-name>
    <servlet-name>MyServlet</servlet-name>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>