且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Struts2之两个Action传值和不传值的struts.xml文件配置

更新时间:2022-09-15 23:14:52

 例如 
在执行完action1之后要直接跳转到action2,并且action1要传一些参数给action2,在struts.xml文件中的配置如下:
    
    <action name="action1" method="" class="">
            <result 
name="success" type="chain">
                <param 
name="actionName">action2</param>
                <param 
name="param1">${param1}</param>
                <param 
name="param2">${param2}</param>
            </result>          
     
        </action>   

注意:
     1. 
若param1和param2是两个变量,那么在两个action中都要有他们的getter和setter
     2. 
若param1是常量,那么在action1中只要有一个param1的getter,在action2中要有param1的getter和setter    


如果在两个action之间直接跳转而不用传参数,struts.xml文件可以和上面一样,只是没有param标签,还可以使用如下配置:
    
<action name="action1" method="" class="">
        <result 
name="success" type="redirectAction">action2.action</result>           
    
    </action>
即可

 

 

 


struts2 action 向jsp页面传递参数问题

在JSP页面的<@page>标签下面加一个 <@ taglib prefix="s" uri="/struts-tags" >标签包(关于这个标签包的配置和使用建议到网上搜索看看),然后 yes.jsp写法。
<s:iterator value="list" id="item">
<s:property value='item'/>
</s:iterator> 这里面item对应着list里的每个元素。 如果item 是对象(如是People对象且People有一个name属性)则可以写成下这样。
<s:iterator value="list" id="item">
<s:property value='#item.name'/>
</s:iterator>



在 Action中我们经常会从这个Action跳转到另一个Action中,如果只是简单的跳转那么很 容易,只需在struts配置文件中添加一个result,如:<resultname="index">/manager /managerInfo/account.jsp</result>. result 有一个type属性,这里的type默认是dispatcher,但这种情况下action之间是不能发送请求的,这时我们就要用到 redirect、redirect-action、chain,当要请求一个action时,可设定type的值为以上三个中的一个,如:<result name="reload" type="redirectAction">/manager/managerInfo/account.action</result>.
   如果想在请求的过程中添加参数可以像超链接传值一样在最后用"xx?xx=xx" 的形式来传递参数.如:<result name="reload" type="redirectAction">/manager/ managerInfo/account.action?参数名=参数值</result>,如果这里的参数值不是一个固定值可以用"${参 数值}"这种形式,需要注意的是这里的"参数值"在相应的Action中一定要提供get/set方法,否则将无法获得参数值,当然这里也同样可以取一个 对象的某个属性值即:${对象名.属性名},假如我想取得一个帐户的帐号:<result name="reload" type="redirectAction" >/manager/managerInfo/account.action?account.accountNO=${account.accountNO}</result>.
如 果想传递多个参数用"&"符号来连接吗?NO,因为 用"&"会在XML语法检查中报错,所以将"&"用"&amp;"来替换就行了!如:<result name="reload" type="redirectAction" >/manager/managerInfo/account.action?account.accountNO=${account.accountNO}&amp;account.balance=${account.balance}</result>.
注:当使用type="redirectAction"时,result中的.action(上面红色标注的地方)可要可不要,但是当你要传递参数里,而且参数中含有中文字符时一定不要加.action,否则你的参数值是无法传递的,这是自己后来才发现的,大家有兴趣的可以去试试...



本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/archive/2013/03/08/2949258.html,如需转载请自行联系原作者