在Struts2.0.11之前,一些頁面的標簽,我還是比較喜歡使用JSTL, 比如說:c:url,類似的,因為Struts里提供的一些標簽,雖然也能完成相應的功能,而且有些功能還更加的強大,但是不如JSTL的用起來方便.但是從Struts2.0.11開始,已經不再支持EL語言了,使我開始轉向使用Struts2.0的標簽了...
有的時候,我們需要在頁面內標識一個資源,但是使用相對路徑有時會引起錯誤,使用Struts的URL標簽可以讓我們直接使用絕對路徑(以前一直用c:url來著.這里的絕對路徑,也是相對于WEBAPP的根目錄的), 比如,引用一張位于/webapp/images/下的圖片test.png.使用URL標簽則為:
<s:url value="/images/test.png" />
這么用其實已經很方便了,但是有的時候會出現一點點小問題,說是問題,原因也是因為自己操作的問題,呵.
比如寫JS中,兩個參數,一個是圖片的位置,一個是圖片名稱.可能寫的時候就要分開寫,這個時候如果URL上跟有請求參數,而還用上面的URL標簽,就會出現問題.因為URL標簽會自動的將URL上的請求參數加到你的URL標簽的Value后面.這樣上面的圖片的位置可能就不是你想要的位置了.
解決辦法:
在上面的標簽中添加一個屬性:
<s:url value="/images/test.png" includeParam="none" />
如果想讓所有的URL標簽都不要自動的添加URL的請求參數,可以通過配置Struts.xml文件來解決這個問題.
在Struts.xml文件中添加下面一行,將s:url的默認行為修改一下:
<constant name="struts.url.includeParams" value="none" />
這樣,就不用在每個標簽上都寫includeParam屬性了,不過在需要請求的參數的時候,就得需要自己來手動添加這個屬性了.
includeParam提供了三個選項:none, get or all
PS:發現廢話越來越多了,呃....啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~