struts2结果(Result)

一、结果(result)类型

result的type属性默认为dispatcher,其他常见的属性有redirect\chain\redirectAction

<action name="a1">
             <result type="dispatcher">
                 /a1.jsp
             </result>
         </action>
         <action name="a2">
             <result type="redirect">
                 /a2.jsp
             </result>
         </action>
         <action name="a3">
             <result type="chain">
                 a1
             </result>
         </action>
         <action name="a4">
             <result type="chain">
                 <param name="actionName">a1</param>
                 <param name="namespace">/</param>
             </result>
         </action>
         <action name="a5">
             <result type="redirectAction">
                 a1
             </result>
         </action>

dispatcher就是forward到一个jsp页面

redirect就是跳转到一个jsp页面

chain就是forward到一个action,跳转到另外一个package用第四种方式

redirectAction就是跳转到一个action

二、全局结果集

在配置struts2.xml时有时候会遇到一个问题即多个action的result是相同的这时候就没有必要为每个action配一个result,只要配置一个global result即可:

<package name="index" namespace="/" extends="struts-default">
         <global-results>
             <result name="msg">/msg.jsp</result>
         </global-results>
     </package>
     <package name="user" namespace="/user" extends="index">

     </package>

这样当index包和user包下的action返回msg的时候就会forward到/msg.jsp。(extends="index"从index包继承)

三、动态结果集

在struts.xml中配置:

<action name="login" class="cn.orlion.user.UserAction" method="login">
             <result>
                 ${r}
             </result>
         </action>

UserAction:

package cn.orlion.user;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport{

    private int type;

    private String r;

    public String login(){

        if (1 == type) r = "/a1.jsp";
        else if (2 == type) r = "/a2.jsp";
        return "success";
    }

    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
    }

    public String getR() {
        return r;
    }

    public void setR(String r) {
        this.r = r;
    }

}

这样当访问http://localhost:8080/Struts2Demo/user/login.action?type=1时就会看到a1.jsp

访问...?type=2时就会看到a2.jsp了

struts.xml中${r} 实际是从Value Stack中取出r的值

四、结果集传参数

当访问.../login.jsp?uid=test时通过< s:property value="uid" />是取不到的因为uid是个参数不会放到Value Stack中而是放到Stack Context中,可以通过<s:property value="#parameters.uid" />娶到。

当访问一个action(在这个action里赋值给了uid)时,这个action的结果:login.jsp(即forward到 /login.jsp)可以用<s:property value="uid" />取到值,这是因为forward可以从Value Stack中取到。

时间: 2024-10-16 06:40:32

struts2结果(Result)的相关文章

Struts2 中result type属性说明

Struts2 中result type属性说明 首先看一下在struts-default.xml中对于result-type的定义: <result-types><result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/><result-type name="dispatcher" class="org.apac

Struts2 配置文件result的name属性和type属性

Struts2 配置文件result的name属性和type属性:Name属性SUCCESS:Action正确的执行完成,返回相应的视图,success是 name属性的默认值: NONE:表示Action正确的执行完成,但并不返回任何视图: ERROR:表示Action执行失败,返回到 错误处理视图: INPUT:Action的执行,需要从前端界面获取参数,INPUT就是代表这个参数输入的界面,一般在应用中,会对这些参数进 行验证,如果验证没有通过,将自动返回到该视图: LOGIN:Actio

Struts2:Result结果类型

常用的结果类型 Struts中自带了一些结果类型.dispatcher表示将结果转交给JSP或者Servlet,redirect表示重定向到另外一个URL,redirectAction表示重定向到另外一个Struts动作.默认的都是dispatcher类型.dispatcher类型的返回结果中可以使用OGNL表达式,主要是为了便于实现显示动态的页面.redirect结果类型中也可以使用OGNL表达式.下面是定义dispatcher结果的一个例子: <action name="Test&qu

Struts2中 Result类型配置详解(转)

一个result代表了一个可能的输出.当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出.在com.opensymphony.xwork2.Action接口中定义了一组标准的结果代码,可供开发人员使用,当然了只有我们的action继承ActionSupport 这个类才可以使用下面的结果代码,如下所示:public interface Action{    public static final String SUCCESS =

Struts2中 Result类型配置详解

一个result代表了一个可能的输出.当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出. 在com.opensymphony.xwork2.Action接口中定义了一组标准的结果代码,可供开发人员使用,当然了只有我们的action继承ActionSupport 这个类才可以使用下面的结果代码,如下所示: public interface Action {     public static final String SUCCES

Struts2的result中各种type类型以及配置文件的一些细节

Struts2支持的不同类型的返回结果为: Chain Result-->type="chain"用来处理Action链 Dispatcher Result -->type="dispatcher"用来转向页面,通常处理JSPFreeMarker Result -->type="freemarker"处理FreeMarker模板HttpHeader Result -->type="httpheader"

[Struts2] No result defined for action ... and result input &amp; Invalid field value for field ...

"No result defined for action ... and result input"错误一般发生在Struts2的拦截器拦截时遇到了问题时,Struts2会将跳转到result为input的视图上,但是在配置文件中并没有给这个Action配置input的result.可以建立一个内容为如下的Jsp文件,并在配置文件中配置result为input时跳转此文件,将会显示出具体的错误原因. <div style="color:red"> &l

Struts2中Result的配置

一个result代表了一个可能的输出.当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出. 一.结果类型 Struts2提供了很多的结果类型的,这里介绍最常用的四种. dispatcher:在服务器内跳转到结果页面(视图页面)中去,只可以跳转到视图页面,不能跳转到Action.(默认类型)redirect:客户端跳转(重定向),URL会发生变化,只可以跳转到视图页面,不能跳转到Action.chain:在服务器内跳转到Action

Struts2中result的返回类型

Struts2框架提供的结果类型 已配置结果类型名  类 名  描 述 dispatcher  org.apache.struts2.dispatcher.ServletDispatcherResult  默认结果类型,用来呈现JSP页面 chain  com.opensymphony.xwork2.ActionChainResult  将action和另外一个action链接起来 freemarker  org.apache.struts2.views.freemarker.Freemarke

【struts2】Result和ResultType

简单的说,Result是Action执行完后返回的一个字符串,它指示了Action执行完成后,下一个页面在哪里.Result仅仅是个字符串,仅仅是用来指示下一个页面的,那么如何才能够到达下一个页面呢?下一个页面如何能正确地展示结果呢?这就该引出一个新概念--ResultType,所谓ResultType,指的是具体执行Result的类,由它来决定采用哪一种视图技术,将执行结果展现给用户. 很多时候,我们并不去区分Result和ResultType,而是笼统的称为Result.因此,Result除