0

我有一個網站使用Struts2作爲MVC框架。我需要重新整理JSP。我需要將舊的JSP與新的JSP一起訪問。所以我添加了一個/newdesign/的根文件夾,並將所有現有的JSP文件夾複製到其中。如何在Struts 2中應用全局動態結果路徑前綴以便reskin JSP?

所以,如果我具有名稱/值對登錄?newdesign=true(例如)我的初始請求,那麼我可以:

  1. 商店這在用戶的會話,然後
  2. 動態
  3. 添加/newdesign/struts.xml中標記的全局前綴,用於確定是否爲相關的Action加載了新的或舊的JSP。

這種方式開發人員可以檢查是否所有的舊頁面已被重新植入一個新的頁面。

我怎樣做上述第2部分? - 我曾看過使用struts.convention.result.path = /newdesign,但這不是動態的,如果用戶要顯示舊的或新的JSP,我不能更改它。

回答

0

如果您知道第1部分,則假定您可以將該參數設置爲應該重定向到其他包的名稱空間的相應操作的相應操作的參數newdesign

前綴在URL中使用的動作名稱指定用於分隔包的操作的命名空間。

如果你有一個具有相同的動作名稱和結果,但不同的位置取決於命名空間的多個模塊,那麼你應該在有自己的命名空間不同的軟件包配置它們。有一個example可以讓你更好地理解命名空間的概念。

你可以儘可能多的軟件包配置爲你有新的設計模塊。如果它們不是太多,那麼就可以像例子那樣簡單地完成。但不是根據參數切換到適當的名稱空間,可以將該參數添加到通過wildcard mappings使用的名稱空間模式。

+0

爲您快速的回覆非常感謝......我有一個總〜100個標籤〜40分的動作,所以我不希望重複支柱的配置,因爲我也是從誰正在升級的原始開發商的動作代碼合併。我只需要重新構建JSP,因此只需要將路徑更改爲例如'/newdesign/jsp/admin/login.jsp'(而不是'/jsp/admin/login.jdp'),這個基於Session變量。所以額外的命名空間和單獨的操作不是首選的解決方案。你知道我可以在全球範圍內添加這樣的「結果」前綴嗎? – user1439173 2013-05-14 07:41:32

+0

我發現了一種通過EL一個變量添加到標籤 - http://mycodefixes.blogspot.co.il/2010/10/struts-2-creating-dynamic-results.html但我還是要更新在我的JSP內的任何<%@ include file =「/ jsp/include.jsp」%>裏面的JSP路徑!這使得我需要將老式的JSP和新的JSP一起使用變得更加複雜。所以我很喜歡這個想法。非常感謝您的時間。 – user1439173 2013-05-14 09:37:22

+0

EL是Strurs2的一個不好的解決方案,結果可能有動態參數。使用include,你應該使用' 2013-05-14 11:04:57