根據觀察,主要是由於通過action跳轉后的url會根據命名空間,自動跳轉到命名空間子目錄,使得當前引用的css和js查找不到,從而失效,根據這個原因,可使用四種辦法解決:
1.使用struts2.xml文件中配置文件的配置,通過修改result的type使得url重定向,result默認的是dispatcher,是服務器中的跳轉,使用redirect可以使得客戶端重新得到一個新的url,這樣url會是上一次目錄,可以查找到css和js,但是這種辦法有一種特別不好的地方,每次跳轉需要把數據保存到session中,對於開發來說是不可取的,它會重新創建一個action,使得上一個action中的數據無法使用,不建議采用。
2.由於url的原因使得css和js查找不到,我們可以把引入的css和js加入進一步地址比如說:以前的地址是< link href= "../style.css" rel="stylesheet" type="text/css" /> 可以修改為< link href= "../../style.css" rel="stylesheet" type="text/css" />這樣網頁就可以直接查詢到自己的外部樣式表了。
3.將struts2.xml命名空間改寫為“/”,不再使用自定義的命名空間,比如說“/admin”。
4.使用jsp網頁中的basePath是項目的根路徑不過需要在其下加入子目錄,因為本身的basePath是屬於根路徑,需要下面的子目錄,比如說在admin子目錄下:String basePath = request.getScheme()+"://" +request.getServerName()+":"+request.getServerPort()+path+ "/admin/"