Struts2 Action处理
一、redirectAction Result
用于将请求重定向给另外一个Action。在MVC设计模式下,我们
应该把每次请求都发送给控制器,即Action。因此重定向时是
发送一次新的请求,那么也应该把这次请求发送给Action,避
免出现直接把请求发送给JSP的情况。
语法1
<result name=”login” type=”redirectAction”>
<param name=”namespace”>/命名空间</param>
<param name=”actionName”>action名</param>
<param name=”method”>方法名</param>
</result>
redirectAction,引用struts-default.xml中定义的result的名称。
namespace,告诉result要重定向的包的命名空间。
actionName,告诉result要重定向的action名称。
method,告诉result要调用目标Action哪个方法。
语法2
*如果重定向的Action与当前的Action在同一个namespace下,那么可以省略namespace的参数设置
*如果调用的是目标Action的execute方法,那么也可以省略method的参数设置。
*只需要配置actionName时,可以进一步优化:
<result name=”login” type=”redirectAction”>
<param name=”actionName”>action名</param>
</result>
二、json Result
json Result用于向页面输出json格式的数据。它可以将json字符串输出到请求发起的位置。具体来说,是可以将Action中指定的属性做成json字符串输出。
这种result常被用于异步请求的情况,原因是异步请求由JS发起,并通过其回调函数接收服务端返回的结果。那么对于JS而言,我们返回Java对象它无法识别,返回json字符串就再合适不过了。
语法1
<result name="success” type=”json”>
<param name=”root”>属性名</param>
</result>
这种方式,可以将Action中的一个属性做成json输出,其中
type=”json”引用的是第三方包中定义的result类型名。
name=”root”是result标签中属性,root是固定写法
属性名,Action内的属性
*如果配置的属性是基本类型的,则result会直接将结果输出给页面。
*如果配置的属性是实体对象,result会将其做成json字符串输出给页面,
格式如{“code”:’xmcy01’,”name”:’zs’}。
语法2
<result name="success” type=”json”>
<param name=”includeProperties”>
属性名1,属性名2,属性名3,…
</param>
</result>
这是另种方式,其中includeProperties是result标签中属性
当中的属性名是Action中的,要看具体情况而定。
result会将指定的这些属性做成一个json字符串输出给页面,
格式如{“id”:49,“name”:“zs”,age:28}。
*建议掌握第一种即可,如果要输出多个数据,完全可以将这些数据封装于Map中进行输出。