给一个Action的result传多个参数

 

今天遇到一个问题,在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>

工作正常了!

 

评论

#  re: 如何给Webwork的redirect的result传递多个参数
<param name = "paraA">xx1</param>
<param name = "paraB">xx2</param>
这种方式不就行啦  
  

 

#  re: 如何给Webwork的redirect的result传递多个参数
呵呵,可能你看错了。这里是说对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的表达式已经够强大了,呵呵
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值