1.result的类型有多种,其中默认的是dispatcher,如果想要转发,则需要设置result的type为forward。
2.有一些url经常被结果标签用到,那么就把他设置为全局结果:
<global-result>
<result name="success">/success.jsp</result>
</global-result>
<action name="" class="">
....
</action>
此时如action返回的结果是success,那么就会使用全局结果的result。
3.关于常用的struts2支持的处理结果类型
chain链:链式处理结果类型
dispatcher 用于转发url的结果类型,一般转发的是jsp界面
freemarker 用于与FreeMarker整合的结果类型
redirect 用于重定向结果类型
redirectAction 用于重定向到其他Action的结果类型
stream用于向客户端输出字节流的结果类型。
4通配符指定
1)结果中德url可以用通配符指定
例:<action name="*Action" class="action.MyAction">
<result name="success">/{1}.jsp</result>
</action>
当action返回success时,就会根据第一个通配符转到相应的jsp界面,比如用户请求的是ABAction,那么success后就会转到AB.jsp
2)通过请求参数指定结果
result中的返回结果可以用{参数}.jsp来指定,参数来自于action的内部属性。例:
public class FAction implements Action{
private String fs;//以后要用到的参数
//get,set函数
}
配置文件中
<action name="FAction" class="FAction">
<result name="success">/${fs}.jsp</result>
</action>
3)action匹配通配符
可以通过action的name,找到其class
例:<action name="*Action" class="bao.MyAction" method="{1}">
</action>
上述例子中Action的内容中有多个方法,每个方法对用一个名字,调用此方法则通过action的配置文件的method,比如Action中有两个方法,分别是login和register,那么就通过method="login"获取login函数,此时就用到了通配符,action的配置文件中的Action匹配到了,method的{1}也就有了。