struts2动态方法调用_Struts2动态结果使用详解

时间:2020-10-17  来源:Action  阅读:

动态匹配结果

动态匹配结果就是通过模式匹配的方式来匹配,关于这一点可以参见这篇《Struts2学习之Action的通配符使用》文章。在这篇文章中已经对这一点进行了详细的总结,这里就不再累述了。

Action属性值定位结果

在配置元素时,除了可以使用上述的模式匹配方式以外,还可以使用${属性名}的方式来指定视图资源。在${属性名}这种方式下,${属性名}里的属性名就是对应Action实例里的属性。而且,不仅允许使用这种简单表达式形式,还可以使用完全的OGNL表达式,即以下这种形式:

${属性名.属性名}

关于使用Action属性值的代码示例请参见这篇《Struts2学习之结果类型总结》文章中redirectAction结果类型详解这小节。其中传递参数时,就使用了${属性名}这种方式来获取Action中的属性值。


1.动态结果。

   有时我们需要在Action里取得我个要转跳的页面

看一下我们的struts.xml

 

 代码如下
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

   
    
   
   
          
   
                                
      
               ${value}
      
   

   
   

很简单只是把result里用${value}取代了具体和页面,那看一下我们的

action是怎么写的

 代码如下

package com.pengli.struts.parampack;

import com.opensymphony.xwork2.ActionSupport;

public class MyActionOne extends ActionSupport{   
    private String strType;
    private String myValue;
    public String Def()
    {
        if(strType!=null&&strType.equals("a"))
        {       
            setValue("/NewJsp.jsp");
                       
        }
        else
        {
            setValue("/Errors.jsp");           
        }
        return SUCCESS;   
    }
    public String getType() {
        return strType;
    }
    public void setType(String type) {
        this.strType = type;
    }
    public String getValue() {
        return myValue;
    }
    public void setValue(String value) {
        this.myValue = value;
    }
}

这是根据type给value赋值,转跳到相应的页面上

http://localhost:8080/Struts16ActionResultsDemo/abc/mya?type=a
正常页面


赋一个别的值

2.带参数的跳转

我们知道redirect形式的转跳是共享值栈的,我们上边说的是&{value}取的是一个整体页面,我们也可以用它来保存和提取参数

这里我们是基于1修改的代码

看一下structs.xml

 代码如下       
               /NewJsp.jsp?v=${type}
      

 

再看一下Action

 代码如下

public String Defb()
    {
        if(strType!=null)
        {
            myValue=String.valueOf(Integer.parseInt(strType)+1);
        }
        return SUCCESS;
    }

 

再看一下jsp页面,因为xml里是直接轩跳的,没有经过Action

所以NewJsp.jsp?v=${type}取v的值时要这么取

 

 代码如下
    This is my JSP page.

    parameters v
   
 


动态结果跳转

struts.xml

 代码如下  
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"> 
 
 
     
     
         
             
            ${r} 
         
   
 
 

  

UserAction.java

 代码如下

package com.pegasus.web; 
 
import com.opensymphony.xwork2.ActionSupport; 
 
public class UserAction extends ActionSupport { 
    private int type; 
    private String r; 
 
    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; 
    } 
 
    public String execute() { 
        System.out.println("type:" + type); 
        //在这里定义要跳转的页面的地址 
        if (type == 1) 
            r = "/user_success.jsp"; 
        else if (type == 2) 
            r = "/user_error.jsp"; 
        return "success"; 
 
    } 

总结

这篇文章虽然很短,但是理不糙,还是需要认真的看一看的,没准儿哪天就能用上呢,是吧。

struts2动态方法调用_Struts2动态结果使用详解

http://m.bbyears.com/flash/105189.html

推荐访问:struts2工作原理 struts2面试题 struts2框架
相关阅读 猜你喜欢
本类排行 本类最新