`
NetBus
  • 浏览: 143582 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于给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","monoxide@gmail.com");   
  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

  • html.link.zip (667 Bytes)
  • 描述: html link多参数的示例代码
  • 下载次数: 127
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics