在沒有使用Struts2的時候可以使用el來進行url傳參。而在Struts2中不推薦使用el(其實在Struts2.0.0.11之后就不再支持el)而推薦使用功能更為強大的ognl表達式語言。那么怎么使用ognl實現url傳參?
?
<s:url>就是解決這一問題的標簽
?
?
<s:url>標簽一般和超鏈接?<a>一起使用,用于帶多個參數。?
?
- <a?href="??
- <s:url?action="">??
- ???<s:param?name="?"?value=""></s:param>???
- ???<s:param?name="?"?value=""></s:param>???
- ???<s:param?name="?"?value=""></s:param>???
- </s:url>"??
- >測試連接</a>??
struts2標簽用在什么頁面?
?
<s:url>生成一個url地址,可以通過url標簽制定的<s:param>子元素向URL地址發送請求參數
?
- <s:url?action="">?指定請求地址??
- <s:param?name=""?value=""></s:param>?指定參數??
- </s:url>??
?
例子:
? ? ??
- <!--action是action的名字,為url添加參數使用param標簽-->??
- ??
- ??????<s:url?var="url"?action="mainPage">???
- ??????????<s:param?name="id"?value="123"/>???
- ??????</s:url>???
- ??
- ??????<!--使用上面定義的url-->???
- ??????<s:a?href="%{url}">測試連接</s:a>???
- ??
- ??該方法在生成的頁面源碼中生成如下代碼???
- ??<a?href="/NetBookShop_081029/mainPage?id=123">測試連接</a>???
?
?
???
includeParams屬性
? ? ? ??
- <!--最重要的屬性includeParams,該屬性有三個值:none?get?all,默認值為get-->???
- ????????<!--屬性值為get時,該url會將訪問其所在jsp的的請求的所有get方法的參數添加到自身來-->???
- ????????<!--屬性值為all時更是將get和post的的參數值全部添加到自身來-->???
- ????????<!--一般我們并不需要額外的參數,所以定義為none-->???
- ????<s:url?var="url"?action="mainPage"?includeParams="none">???
- ????????????<s:param?name="id"?value="123"/>???
- ????????</s:url>???
?
?
includeContext屬性
? ?
- ?<!--includeContext:有true和false兩個值。url中是否包含上下文,也就是在url中的項目名-->???
- ????????<!--這個一般不用改,讓它自動包含,否則會定位到服務器的根目錄下-->???
- ????????<s:url?var="url"?action="mainPage"?includeContext="false">???
- ????????????<s:param?name="id"?value="123"/>???
- ????????</s:url>???
- ????生成的url就下面的樣子了,注意在普通的html中使用/會定位到服務器的根目錄,而在struts的標簽里使用/會自動添加上下文,所以不用麻煩的指定項目名???
- <a?href="/mainPage?id=123">url</a>???
?
?
Method屬性
? ? ? ?
- <!--method用于指定執行action的方法?這個等同于action="mainPage!ok"-->???
- ???????<s:url?var="url"?action="mainPage"?method="ok">???
- ???????????<s:param?name="id"?value="123"/>???
- ???????</s:url>???
?
?
namespace屬性?
? ? ? ?
- <!--指定命名空間后,生成的url會使用相對路徑,具體的看我的結果-->???
- ???????<s:url?var="url"?action="mainPage"?namespace="user">???
- ???????????<s:param?name="id"?value="123"/>???
- ???????</s:url>???
- ???結果如下???
- lt;a?href="user/mainPage?id=123">url</a>??