struts 中使用 urlrewrite 怪异现象,高手请进!!!

happy_yls 2009-08-13 04:11:53
在struts中使用urlrewrite来进行url重写,其中一个<outbound-rule>很怪异,代码中
<html:link page="/bbs/topic.do" name="totalPage">
输出来总是
http://localhost:7001/bbs/topic.do?topicId=123&page=2
而正确结果应该是
http://localhost:7001/bbs/topic-123-2.html

如果代码中这样写
<html:link page="/bbs/topic.do?topicId=123&page=2">
的话能得到正确结果,可是topicId和page必须是参数形式传递过来,所以才会用到name="totalPage"
哪位高手知道是怎么回事呢?
小弟多谢了!!!


...全文
56 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
quxiuer 2009-08-14
那就再写一个不带参数的配置

<outbound-rule>
<from>/bbs/topic.do\?</from>
<to>bbs/topic.html </to>
</outbound-rule>
回复
happy_yls 2009-08-14
没人知道吗???
回复
xuexijava 2009-08-14
mark
回复
happy_yls 2009-08-14
终于搞定了
把&作为普通字符串
<outbound-rule>
<from>/bbs/topic.do\?topicId=([a-zA-Z0-9]+)(.*)page=([0-9]+) </from>
<to>bbs/topic-$1-$2.html </to>
</outbound-rule>

这样就OK了
回复
happy_yls 2009-08-14
也就是说我要把
http://localhost:7001/bbs/topic.do?topicId=123&page=2
转为
http://localhost:7001/bbs/topic-123-2.html
这个
<outbound-rule>
怎么写???
回复
happy_yls 2009-08-14
谢谢5楼!
我刚才发现虽然当鼠标放到链接上时显示http://localhost:7001/bbs/topic.do?topicId=123&page=2 ,但网页源文件中生成的代码实际上是http://localhost:7001/bbs/topic.do?topicId=123&page=2 ,也就是说当有两个参数时,struts的<html:link>标签产生的“&”为转义字符&而不是“&”。直接写参数时<html:link page="/bbs/topic.do?topicId=123&page=2"> 不会转义,源文件里还是显示http://localhost:7001/bbs/topic.do?topicId=123&page=2 。为什么会这样呢?
问题已经找到了,但我不知道怎么处理。。。。。
回复
happy_yls 2009-08-13
应该不是那里的问题吧?因为直接这样写可以得到正确结果
<html:link page="/bbs/topic.do?topicId=123&page=2">

我的urlrewrite 中配置如下(部分)

<outbound-rule>
<from>/bbs/topic.do\?topicId=([a-zA-Z0-9]+)&page=([0-9]+)</from>
<to>bbs/topic-$1-$2.html</to>
</outbound-rule>
回复
好吃的松子 2009-08-13
试试转码一下&
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2009-08-13 04:11
社区公告
暂无公告