Struts2_20_ResultWithParameter

来源:互联网 发布:几米软件 编辑:程序博客网 时间:2024/06/12 21:53
1,一次请求,不管经过多少个Action,都只有一个值栈。所以如果客户端向Aaction发出请求,struts.xml执行服务器端跳转,Aaction跳转到Baction,那么Aaction和Baction是共享一个值栈的,所以这两个Action定义的属性可以互相使用,不用传参数。
2,但是如果客户端向Aaction发出请求,struts.xml执行客户端跳转即redirect时,就是两次请求了,那么就需要传递参数了。
 
小例子:
struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
  <constant name="struts.devMode" value="true" />
  <constant name="struts.i18n.encoding" value="GBK"></constant>
     <package name="user" namespace="/user" extends="struts-default">
         <action name="user" class="com.awei.struts2.action.UserAction">
             <result type="redirect">/user_success.jsp?t=${type}</result>
         </action>
    </package>
    <!-- Add packages here -->
</struts>
 
com.awei.struts2.action.UserAction:
 
package com.awei.struts2.action;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport{
    private String type;
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String execute(){
        return SUCCESS;
    }
    
}
 
index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/csshref="styles.css">
    -->
  </head>
  
  <body>
    <<a href="user/user?type=3">进入</a><br>
  </body>
</html>
 
 
重点:user_success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'user_success.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/csshref="styles.css">
    -->
  </head>
  
  <body> 
    from ValueStack:<s:property value="t"/>
    from ActionContext:<s:property value="#parameters.t"/>
    <s:debug></s:debug>
  </body>
</html>
显示结果:
 
from ValueStack: from ActionContext:3

[Debug]

Struts ValueStack Debug

Value Stack Contents

ObjectProperty NameProperty Valuecom.opensymphony.xwork2.DefaultTextProvidertextsnull

Stack Context

These items are available using the #key notationKeyValuecom.opensymphony.xwork2.dispatcher.HttpServletRequestorg.apache.struts2.dispatcher.StrutsRequestWrapper@6c137capplication{org.apache.tomcat.InstanceManager=org.apache.catalina.core.DefaultInstanceManager@16b352c, org.apache.catalina.resources=org.apache.naming.resources.ProxyDirContext@1ad0d89, org.apache.catalina.jsp_classpath=/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/classes/;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/commons-fileupload-1.2.1.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/commons-io-1.3.2.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/commons-logging-1.0.4.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/freemarker-2.3.15.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/jsf-api.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/jsf-impl.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/jstl-1.2.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/ognl-2.7.3.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/struts2-core-2.1.8.1.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/xwork-core-2.1.6.jar;/F:/java/apache-tomcat-7.0.28/lib/;/F:/java/apache-tomcat-7.0.28/lib/activation.jar;/F:/java/apache-tomcat-7.0.28/lib/annotations-api.jar;/F:/java/apache-tomcat-7.0.28/lib/catalina-ant.jar;/F:/java/apache-tomcat-7.0.28/lib/catalina-ha.jar;/F:/java/apache-tomcat-7.0.28/lib/catalina-tribes.jar;/F:/java/apache-tomcat-7.0.28/lib/catalina.jar;/F:/java/apache-tomcat-7.0.28/lib/dom4j-1.6.1.jar;/F:/java/apache-tomcat-7.0.28/lib/ecj-3.7.2.jar;/F:/java/apache-tomcat-7.0.28/lib/el-api.jar;/F:/java/apache-tomcat-7.0.28/lib/jasper-el.jar;/F:/java/apache-tomcat-7.0.28/lib/jasper.jar;/F:/java/apache-tomcat-7.0.28/lib/jsmartcom_zh_CN.jar;/F:/java/apache-tomcat-7.0.28/lib/jsp-api.jar;/F:/java/apache-tomcat-7.0.28/lib/mail.jar;/F:/java/apache-tomcat-7.0.28/lib/servlet-api.jar;/F:/java/apache-tomcat-7.0.28/lib/tomcat-api.jar;/F:/java/apache-tomcat-7.0.28/lib/tomcat-coyote.jar;/F:/java/apache-tomcat-7.0.28/lib/tomcat-dbcp.jar;/F:/java/apache-tomcat-7.0.28/lib/tomcat-i18n-es.jar;/F:/java/apache-tomcat-7.0.28/lib/tomcat-i18n-fr.jar;/F:/java/apache-tomcat-7.0.28/lib/tomcat-i18n-ja.jar;/F:/java/apache-tomcat-7.0.28/lib/tomcat-jdbc.jar;/F:/java/apache-tomcat-7.0.28/lib/tomcat-util.jar;/F:/java/apache-tomcat-7.0.28/lib/xunzai.com_mysql-connector-java-5.1.7-bin.jar;/F:/java/apache-tomcat-7.0.28/bin/tomcat-juli.jar;/F:/java/apache-tomcat-7.0.28/bin/bootstrap.jar;/F:/各种软件/jdk/开发环境/lib/tools.jar;/F:/java/jarPackage/commons-lang-2.4.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/commons-fileupload-1.2.2.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/commons-io-2.2-javadoc.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/commons-io-2.2-sources.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/commons-io-2.2-test-sources.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/commons-io-2.2-tests.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/commons-io-2.2.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/dnsns.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/localedata.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/servlet-api.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/sunjce_provider.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/sunmscapi.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/sunpkcs11.jar, com.sun.faces.config.WebConfiguration=com.sun.faces.config.WebConfiguration@4276fd, org.apache.jasper.compiler.TldLocationsCache=org.apache.jasper.compiler.TldLocationsCache@cef147, org.apache.jasper.runtime.JspApplicationContextImpl=org.apache.jasper.runtime.JspApplicationContextImpl@15a4a77, org.apache.tomcat.JarScanner=org.apache.tomcat.util.scan.StandardJarScanner@53bbfa, freemarker.Configuration=freemarker.template.Configuration@16feee5, javax.servlet.context.tempdir=F:\java\apache-tomcat-7.0.28\work\Catalina\localhost\Struts2_0700_ResultWithParameter}com.opensymphony.xwork2.ActionContext.localezh_CNcom.opensymphony.xwork2.dispatcher.HttpServletResponseorg.apache.catalina.connector.ResponseFacade@13d4c49current.property.pathnullcom.opensymphony.xwork2.ActionContext.application{org.apache.tomcat.InstanceManager=org.apache.catalina.core.DefaultInstanceManager@16b352c, org.apache.catalina.resources=org.apache.naming.resources.ProxyDirContext@1ad0d89, org.apache.catalina.jsp_classpath=/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/classes/;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/commons-fileupload-1.2.1.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/commons-io-1.3.2.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/commons-logging-1.0.4.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/freemarker-2.3.15.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/jsf-api.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/jsf-impl.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/jstl-1.2.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/ognl-2.7.3.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/struts2-core-2.1.8.1.jar;/F:/java/apache-tomcat-7.0.28/webapps/Struts2_0700_ResultWithParameter/WEB-INF/lib/xwork-core-2.1.6.jar;/F:/java/apache-tomcat-7.0.28/lib/;/F:/java/apache-tomcat-7.0.28/lib/activation.jar;/F:/java/apache-tomcat-7.0.28/lib/annotations-api.jar;/F:/java/apache-tomcat-7.0.28/lib/catalina-ant.jar;/F:/java/apache-tomcat-7.0.28/lib/catalina-ha.jar;/F:/java/apache-tomcat-7.0.28/lib/catalina-tribes.jar;/F:/java/apache-tomcat-7.0.28/lib/catalina.jar;/F:/java/apache-tomcat-7.0.28/lib/dom4j-1.6.1.jar;/F:/java/apache-tomcat-7.0.28/lib/ecj-3.7.2.jar;/F:/java/apache-tomcat-7.0.28/lib/el-api.jar;/F:/java/apache-tomcat-7.0.28/lib/jasper-el.jar;/F:/java/apache-tomcat-7.0.28/lib/jasper.jar;/F:/java/apache-tomcat-7.0.28/lib/jsmartcom_zh_CN.jar;/F:/java/apache-tomcat-7.0.28/lib/jsp-api.jar;/F:/java/apache-tomcat-7.0.28/lib/mail.jar;/F:/java/apache-tomcat-7.0.28/lib/servlet-api.jar;/F:/java/apache-tomcat-7.0.28/lib/tomcat-api.jar;/F:/java/apache-tomcat-7.0.28/lib/tomcat-coyote.jar;/F:/java/apache-tomcat-7.0.28/lib/tomcat-dbcp.jar;/F:/java/apache-tomcat-7.0.28/lib/tomcat-i18n-es.jar;/F:/java/apache-tomcat-7.0.28/lib/tomcat-i18n-fr.jar;/F:/java/apache-tomcat-7.0.28/lib/tomcat-i18n-ja.jar;/F:/java/apache-tomcat-7.0.28/lib/tomcat-jdbc.jar;/F:/java/apache-tomcat-7.0.28/lib/tomcat-util.jar;/F:/java/apache-tomcat-7.0.28/lib/xunzai.com_mysql-connector-java-5.1.7-bin.jar;/F:/java/apache-tomcat-7.0.28/bin/tomcat-juli.jar;/F:/java/apache-tomcat-7.0.28/bin/bootstrap.jar;/F:/各种软件/jdk/开发环境/lib/tools.jar;/F:/java/jarPackage/commons-lang-2.4.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/commons-fileupload-1.2.2.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/commons-io-2.2-javadoc.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/commons-io-2.2-sources.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/commons-io-2.2-test-sources.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/commons-io-2.2-tests.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/commons-io-2.2.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/dnsns.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/localedata.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/servlet-api.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/sunjce_provider.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/sunmscapi.jar;/F:/各种软件/jdk/开发环境/jre/lib/ext/sunpkcs11.jar, com.sun.faces.config.WebConfiguration=com.sun.faces.config.WebConfiguration@4276fd, org.apache.jasper.compiler.TldLocationsCache=org.apache.jasper.compiler.TldLocationsCache@cef147, org.apache.jasper.runtime.JspApplicationContextImpl=org.apache.jasper.runtime.JspApplicationContextImpl@15a4a77, org.apache.tomcat.JarScanner=org.apache.tomcat.util.scan.StandardJarScanner@53bbfa, freemarker.Configuration=freemarker.template.Configuration@16feee5, javax.servlet.context.tempdir=F:\java\apache-tomcat-7.0.28\work\Catalina\localhost\Struts2_0700_ResultWithParameter}last.property.accessednull__component_stack[org.apache.struts2.components.Debug@18df055]attrorg.apache.struts2.util.AttributeMap@19d96b1com.opensymphony.xwork2.dispatcher.ServletContextorg.apache.catalina.core.ApplicationContextFacade@1767553com.opensymphony.xwork2.ActionContext.containercom.opensymphony.xwork2.inject.ContainerImpl@369fdccom.opensymphony.xwork2.ActionContext.session{}com.opensymphony.xwork2.dispatcher.PageContextorg.apache.jasper.runtime.PageContextImpl@1961a84session{}com.opensymphony.xwork2.util.ValueStack.ValueStackcom.opensymphony.xwork2.ognl.OgnlValueStack@15a3a92__requestWrapper.getAttributefalselast.bean.accessednullrequest{.freemarker.RequestParameters=freemarker.ext.servlet.HttpRequestParametersHashModel@1a550f9, struts.valueStack=com.opensymphony.xwork2.ognl.OgnlValueStack@15a3a92, __cleanup_recursion_counter=1, .freemarker.Request=freemarker.ext.servlet.HttpRequestHashModel@bb5859}parameters{t=[Ljava.lang.String;@6745b9}com.opensymphony.xwork2.ActionContext.parameters{t=[Ljava.lang.String;@6745b9}__link[Ljava.lang.Object;@128340
来源: <My JSP 'user_success.jsp' starting page>
 
从上图中可以看出来,<s:property value="t"/>是无效的,而且从valuestack中可以看出根本没有t和type的属性。但是可以从stack context中看到有parameters,可以用These items are available using the #key notation 来取得:即<s:property value="#parameters.t"/>
 
0 0
原创粉丝点击