给一个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的问题。
经过再三查询得到解决方案:
使用"&"代替"&",原理和HTML中的转义相同,我居然忘记了XML的语法规范,惭愧。
配置如下:

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

 result>
action>

工作正常了!

 

评论

#  re: 如何给Webwork的redirect的result传递多个参数
xx1
xx2
这种方式不就行啦  
  

 

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

其实上面的代码如果不简写,将所有的参数指明是这样的:


/some.action?field1=${field1}&field2=${field2}
true


因为type="reirect"的result只接受location和parse两个参数,不支持自定义的param,这是个限制。这个限制可以在webwork的wiki上面搜索到。希望以后webwork可以改变它。不过lightbody本人也许觉得OGNL的表达式已经够强大了,呵呵

你可能感兴趣的:(webwork,action,webwork,redirect,reference,class,xml)