• Struts2 学习笔记 11 Result part2


      之前学习了result type 和global result 我们现在来说一下

    1.Dynamic Result动态结果集。先来看一下小项目的目录



    首页的两个链接访问user/user?type=1 和user/user?type=2。来看一下struts.xml的配置

    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" />
        <package name="default" namespace="/user" extends="struts-default">
        
    		<action name="user" class="com.tfj.struts2.action.UserAction">
    			<result>${r}
    			</result>
    		</action>
           
        </package>
    
    </struts>

    这里的<result>${r}</result>就是一个动态结果集,那么是怎么调用的呢。在UserAction.java里定义了r字符串变量,实现get() set() 方法并给r复制来实现动态调用。

    UserAction.java

    package com.tfj.struts2.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class UserAction extends ActionSupport{
    	private String r;
    	public String getR() {
    		return r;
    	}
    	public void setR(String r) {
    		this.r = r;
    	}
    	private int type;
    	public int getType() {
    		return type;
    	}
    	public void setType(int type) {
    		this.type = type;
    	}
    	@Override
    	
    	public String execute() throws Exception {
    		if(type==1)  r="/success.jsp";
    		else if(type==2)  r="/error.jsp";
    	 return "success";
    	}
    	
    }



    定义的r也成为action的一个属性,我们可以用debug查看到。

    2.然后我们说一下带参数的结果集,先看一下小项目构成。


    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" />
        <package name="default" namespace="/user" extends="struts-default">
        
    		<action name="user" class="com.tfj.struts2.action.UserAction">
    			<result type="redirect">
    			/success.jsp?t=${type}
    			</result>
    		</action>
           
        </package>
    
    </struts>
    


    result类型是redirect,传递的来type=1,我们要在success.jsp里接受type的值。我们看一下结果如下

    success.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <%@taglib uri="/struts-tags"  prefix="s"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP '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/css" href="styles.css">
    	-->
    
      </head>
      
      <body>
        Success. <br>
        from valuestack: <s:property value="t"/><br>
        from actioncontext: <s:property value="#parameters.t"/>
        <s:debug></s:debug>
      </body>
    </html>


    注意这里<s:property value="t"/>拿不到值,只有<s:property value="#parameters.t"/>可以拿到值。因为是redirect,所以值栈为空,debug已经看到了,若是用forward传递共用值栈,不需要这样,redirect只能用第二种方式拿到值。

    下图为关系图



    资源下载:DynamicResult.rar

        ResultWithParams.rar   



  • 相关阅读:
    js中的构造函数
    js中的匿名函数
    【bzoj4771】七彩树 树链的并+STL-set+DFS序+可持久化线段树
    【bzoj3881】[Coci2015]Divljak AC自动机+树链的并+DFS序+树状数组
    【loj6029】「雅礼集训 2017 Day1」市场 线段树+均摊分析
    【loj114】k大异或和 线性基+特判
    【bzoj5118】Fib数列2 费马小定理+矩阵乘法
    【bzoj5084】hashit 广义后缀自动机+树链的并+STL-set
    【bzoj5210】最大连通子块和 树链剖分+线段树+可删除堆维护树形动态dp
    【bzoj4712】洪水 树链剖分+线段树维护树形动态dp
  • 原文地址:https://www.cnblogs.com/pangblog/p/3246727.html
Copyright © 2020-2023  润新知