相信大家對於Struts 1.x中的html:link標籤非常熟悉。一般的使用方法是這樣子的:
- LinkObject linkObject = new LinkObject();
- linkObject.setName("monoxide");
- request.setAttribute("linkObject",linkObject);
- < html:link href="test.jsp" paramName="linkObject" paramId="realName" paramProperty="name" paramScope="request">測試 Object< /html:link>
這個表示方法是:
從request中取出linkObject的name的值,然後以realName的參數形式加到test.jsp後面,最後生成的代碼看起來是這個樣子:test.jsp?realName=monoxide
這種方法雖然簡單,但是有一個缺陷。那就是隻能從linkObject中取出一個值來,如果想取2個或者2個以上屬性追加到參數後面,該方面就無能爲力了。
在研究了struts html link源代碼後,發現有個name屬性可以利用,但是該屬性的值只能放置map類型的對象,而不能放置普通的Object。代碼如下:
- Map map = new HashMap();
- map.put("name","一氧華碳");
- map.put("email","[email protected]");
- request.setAttribute("map",map);
- < html:link href="test.jsp" name="map" useLocalEncoding="true">測試 Map< /html:link>
最後生成的Link:test.jsp?email=monoxide%40gmail.com&name=%D2%BB%D1%F5%BB%AA%CC%BC
特別注意:useLocalEncoding 該屬性如果爲true,則以系統的編碼來urlencode。如果爲false,則以utf-8的編碼。默認爲false
完整測試代碼見附件!
如果沒有特別註明,本Blog文章豈爲原創。
轉貼請註明出處: http://netbus.iteye.com