关于在多个Action之间传递参数

来源:互联网 发布:宜兴俊知 编辑:程序博客网 时间:2024/06/06 03:58

关于在多个Action之间传递参数

使用chain的方式会保留请求参数,这毫无疑问。

<action name="addCommentPro"class="addCommentAction">         
   <interceptor-refname="authorityStack"/>     
   <resulttype="chain">viewCommentPro</result>
</action>

当使用redirectAction时,会发生重定向,参数会丢失,可以使用以下两种方式传递参数,两种方法下

目标Action都必须有对应属性的getter,setter方法

param方式:


<action name="addCommentPro"class="addCommentAction">
          <interceptor-refname="authorityStack"></interceptor-ref>
          <resulttype="redirectAction">
             <paramname="actionName">viewCommentPro</param>
             <paramname="aid">${aid}</param>
         </result>
</action>

直接传递:

<action name="addCommentPro"class="addCommentAction">
          <interceptor-refname="authorityStack"></interceptor-ref>
          <resulttype="redirectAction">viewCommentPro?aid=${aid}</result>
</action>
从上面看出,在struts.xml里调用OGNL表达式并不是使用%{}而是使用${},这和EL表达式在JSP页面中的

用法一样。

 

顺便复习下Struts2中#,$和%的用法

井号(#)主要用于访问OGNL的上下文,相当于ActionContext.getContext(),多用于访问

request,session等内置对象。

<s:iteratorvalue="#request.articles" id="a"status="s">
         <tr>
             <td><s:propertyvalue="#s.index"/></td>
             <tdclass="title"><s:propertyvalue="#a.title"/></td>
             <tdclass="content"><s:propertyvalue="#a.content"/></td>
             <tdclass="username"><s:propertyvalue="#a.user.username"/></td>
             <td><s:aaction="deletePro?id=%{#a.id}">删除</s:a></td>
         </tr>
      </s:iterator>

百分号(%)主要用于在标志的属性为字符串类型时,计算OGNL表达式的值。
<td><s:aaction="deletePro?id=%{#a.id}">删除</s:a></td>
<p><s:urlvalue=”%{#foobar['foo1']}”/></p>
 

美元符号($)主要用于在国际化资源文件或xml配置文件中使用OGNL表达式,例子如上Action间传值。
 

顺便再复习下,EL表达式语法${expression}


0 0
原创粉丝点击