關於給Struts的Html link標籤的action(或者page、href)屬性設置多個動態參數的解決辦法...

相信大家對於Struts 1.x中的html:link標籤非常熟悉。一般的使用方法是這樣子的:

  1. LinkObject linkObject  = new LinkObject();   
  2. linkObject.setName("monoxide");   
  3. request.setAttribute("linkObject",linkObject);   
  4.   
  5.   < 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。代碼如下:

java 代碼

 

  1. Map map = new HashMap();   
  2. map.put("name","一氧華碳");   
  3. map.put("email","[email protected]");   
  4. request.setAttribute("map",map);   
  5.   
  6.    < 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章