Jsp 如何在Struts 2中应用全局动态结果路径前缀?

Jsp 如何在Struts 2中应用全局动态结果路径前缀?,jsp,struts2,actionresult,wildcard-mapping,struts2-namespace,Jsp,Struts2,Actionresult,Wildcard Mapping,Struts2 Namespace,我有一个网站使用Struts2作为MVC框架。我需要重新皮肤的JSP。我需要让旧的JSP与新的JSP一起访问。因此,我添加了一个根文件夹/newdesign/,并将所有现有JSP文件夹复制到其中 因此,如果我使用名称/值对登录?newdesign=true(例如),我是初始请求,那么我可以: 将其存储在用户会话中,然后 动态地将/newdesign/作为全局前缀添加到struts.xml中的标记中,该标记确定是否为相关的操作加载了新JSP或旧JSP 通过这种方式,开发人员可以检查是否所有旧页面都

我有一个网站使用Struts2作为MVC框架。我需要重新皮肤的JSP。我需要让旧的JSP与新的JSP一起访问。因此,我添加了一个根文件夹
/newdesign/
,并将所有现有JSP文件夹复制到其中

因此,如果我使用名称/值对登录
?newdesign=true
(例如),我是初始请求,那么我可以:

  • 将其存储在用户会话中,然后
  • 动态地将
    /newdesign/
    作为全局前缀添加到
    struts.xml
    中的
    标记中,该标记确定是否为相关的
    操作加载了新JSP或旧JSP
  • 通过这种方式,开发人员可以检查是否所有旧页面都已重新换肤到新页面中

    我怎样才能完成上面的第二部分

    我已经考虑过使用

    struts.convention.result.path=/newdesign


    但是这不是动态的,如果要向用户显示旧的或新的JSP,我无法更改它。

    如果您知道第1部分,那么假设您可以将参数设置为应该重定向到包含与您的参数
    newdesign
    对应的命名空间的其他包的相应操作

    在URL中使用操作名称的前缀来指定命名空间,以便在包中分隔操作。因此,
    newdesign
    将通过不同的名称空间进入单独的模块

    现在有了两个模块,它们具有相同的操作名称和结果,但位置不同,这取决于名称空间。您应该在具有自己名称空间的不同包中配置它们。有一种方法可以让您更好地理解名称空间的概念


    为了简化软件包配置,您可以通过使用命名空间中的参数。

    非常感谢您的快速回复…我有大约40个操作,总共有大约100个标记,因此我不想复制struts配置,因为我还合并了更新原始操作的开发人员的代码。我只需要重新皮肤jsp,因此只需要根据会话变量将它们的路径更改为“/newdesign/jsp/admin/login.jsp”(而不是“/jsp/admin/login.jdp”)。因此,附加名称空间和单独操作不是首选解决方案。你知道我可以全局添加这样一个“result”前缀的方法吗?我找到了一种通过EL将变量添加到标记中的方法-但是我仍然需要在JSP的任何内部更新JSP路径!这使我需要同时使用旧的JSP和新的JSP变得更加复杂。所以我放弃了这个想法。非常感谢您的时间。EL是Strurs2的糟糕解决方案,结果可能有动态参数。对于include,您应该使用