Tin's Blog

You are coming a long way, baby~Thinking, feeling, memory...

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  128 随笔 :: 0 文章 :: 221 评论 :: 0 Trackbacks

今天遇到一个问题,在Webwork 2.2里面给一个Action的result传多个参数:
原先配置如下

<action name="blahblahAction" class="blahAction" method="blah">
   
<result name="success" type="redirect">/some.action?field1=${field1}&field2=${field2}</result>
</action>

运行时候出现如下提示:
The reference to entity "field2" must end with the ';' delimiter.
我本以为是OGNL的问题,四处搜寻,不得其解……看了DTD也没有发现问题。
后来修改过程中突然发现原来是SAX解析器出错,我这才想到可能是XML的问题。
经过再三查询得到解决方案:
使用"&amp;"代替"&",原理和HTML中的转义相同,我居然忘记了XML的语法规范,惭愧。
配置如下:

<action name="blahblahAction" class="blahAction" method="blah">
   
<result name="success" type="redirect">/some.action?field1=${field1}&amp;field2=${field2}</result>
</action>

工作正常了!希望对大家有用。
这几天超忙,没怎么写Blog,还是要勤呀。

posted on 2006-02-24 13:56 Tin 阅读(6169) 评论(17)  编辑  收藏 所属分类: Webwork相关

评论

# re: 如何给Webwork的redirect的result传递多个参数 2006-02-24 17:27 keigo
<param name = "paraA">xx1</param>
<param name = "paraB">xx2</param>
这种方式不就行啦  回复  更多评论
  

# re: 如何给Webwork的redirect的result传递多个参数 2006-02-25 00:04 Tin
呵呵,可能你看错了。这里是说对result的多参数进行配置,而不是对action的参数进行配置,两者所处的Action生命周期不同。<param>参数负责给Action初始化赋值,而对result不能通过<param>赋值,在result type="redirect"时相当于Action生命周期结束并将参数传给下一个action或者一些url触发的事件。

其实上面的代码如果不简写,将所有的参数指明是这样的:
<action name="blahblahAction" class="blahAction" method="blah">
<result name="success" type="redirect">
<param name="location">/some.action?field1=${field1}&amp;field2=${field2}</param>
<param name="parse">true</param>
</result>
</action>
因为type="reirect"的result只接受location和parse两个参数,不支持自定义的param,这是个限制。这个限制可以在webwork的wiki上面搜索到。希望以后webwork可以改变它。不过lightbody本人也许觉得OGNL的表达式已经够强大了,呵呵:D  回复  更多评论
  

# re: 如何给Webwork的redirect的result传递多个参数 2006-03-29 11:01 testtest
只要在xml文件中;号都要被&amp;替代,这个我早就会了,想不到高手还会为这个写blog.哧哧。。  回复  更多评论
  

# re: 如何给Webwork的redirect的result传递多个参数 2006-03-31 15:35 Snow
"这个我早就会了"---明显的小人得志,没见过那个真正的高手说这话,自己会了讥笑别人不会,这是什么作风,最看不惯了!!
我觉得楼主的的帖子对本人非常管用,我正在苦苦的搜索相关的问题呢,顶一个!!!  回复  更多评论
  

# re: 如何给Webwork的redirect的result传递多个参数 2006-04-09 00:45 testtest
@Snow

sb,我又不是高手,我也没说自已是高手。
  回复  更多评论
  

# re: 如何给Webwork的redirect的result传递多个参数 2007-01-16 17:10 ccmv
你好,请问给/some.action?field1=${field1}&amp;field2=${field2}
${field1} ${field2}传值  回复  更多评论
  

# re: 如何给Webwork的redirect的result传递多个参数[未登录] 2007-04-03 16:24 jack
请问我在传递参数是为什么只能得到一个参数?
比如:
<action name="actionName" class="someAction" method="someMethod">
<result name="success" type="redirect">
<param name="location">anotherAction.action?param1=${param1}&amp;param2=${param2}</param>
<param name="parse">true</param>
</result>
</action>

重定向后,我在Action中只能得到第一个参数(parameters.size() == 1),第二个参数丢失了。
请问您知道什么原因吗?
cnlf@sina.com  回复  更多评论
  

# re: 如何给Webwork的redirect的result传递多个参数[未登录] 2007-06-28 17:43 野草
感谢作者!解决了个问题。顺便鄙视一下那个小人得志testtest╭∩╮(︶︿︶)╭∩╮。  回复  更多评论
  

# re: 如何给Webwork的redirect的result传递多个参数 2007-07-17 18:19 网友
第二个参数 丢了, 是什么原因 , 我一碰到这个问题.
xuzhibing0907@163.com  回复  更多评论
  

# re: 如何给Webwork的redirect的result传递多个参数 2007-07-18 14:36 Tin
第二个不会丢,用&amp;就可以了。  回复  更多评论
  

# re: 如何给Webwork的redirect的result传递多个参数 2007-11-20 11:32 biby
谢谢!!正是我要的  回复  更多评论
  

# re: 如何给Webwork的redirect的result传递多个参数 2008-04-17 17:12 晓秋
Cannot create a session after the response has been committed

我用这个出现了这个问题,请教一下.有没有解决方案.  回复  更多评论
  

# re: 如何给Webwork的redirect的result传递多个参数[未登录] 2008-06-24 13:46 test
谢谢,我也遇见这个问题了!  回复  更多评论
  

# re: 如何给Webwork的redirect的result传递多个参数[未登录] 2008-06-24 13:47 test
我也遇见这个问题了!  回复  更多评论
  

# re: 如何给Webwork的redirect的result传递多个参数 2008-10-06 21:42 wwb
/selectMinusPricing.action?s1=${sessionScope.serviceuser.userId}

我的为什么得不到 输出s1=0;  回复  更多评论
  

# re: 如何给Webwork的redirect的result传递多个参数[未登录] 2009-04-23 10:54 aaa
谢谢楼主,
testtest就是一个山炮  回复  更多评论
  

# re: 如何给Webwork的redirect的result传递多个参数[未登录] 2009-06-07 20:02 dd
ddd@keigo
  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: