zoukankan      html  css  js  c++  java
  • 二十、ValueStack的常用方法

    二十、ValueStack的常用方法

    • void set(String key,Object value):先获取根栈栈顶的Map,如果不存在,压入一个新的Map

    public String execute() throws Exception {

            ValueStack vs = ActionContext.getContext().getValueStack();

            vs.set("p1", "pp1");

            vs.set("p2", "pp2");

            vs.push(new Date());//把一个对象压入栈顶

            vs.set("p3", "pp3");

            return SUCCESS;

        }

     

    • void setValue(String ,Object):String是一个OGNL表达式。如果表达式以#开头,操作contextMap。

      如果不是,设置根栈中对象的某个属性,从顶到尾依次搜寻。

    public String execute() throws Exception {

            ValueStack vs = ActionContext.getContext().getValueStack();

            vs.push(new Date());

            // 把一个对象压入栈顶

            vs.push(new Date());

            // 从栈顶搜索对象的属性,并设置month的值

            vs.setValue("[1].month", 10);

            vs.setValue("#month", 10);

     

            // 从栈顶开始搜索所有对象的shit属性:setShit,都没有报错

            vs.setValue("shit", "hehe");

     

            return SUCCESS;

        }

     

    • Object findValue(String expr):参数是一个OGNL表达式。如果以#开头,

      从contextMap中找key值所对应的对象。如果不是以#开头,搜索根栈中对象的属性(getter方法)

    特别注意:如果编写的表达式不是以#开头,先搜索根栈对象的所有属性,

    如果没有找到,会把它当做key值到contextMap中找。

    public String execute() throws Exception {

            ValueStack vs = ActionContext.getContext().getValueStack();

            vs.push(new Date());

            // 把一个对象压入栈顶

            vs.push(new Date());

            // 从栈顶搜索对象的属性,并设置month的值

            vs.setValue("[1].month", 10);

            vs.setValue("#month", 10);

     

            // 从栈顶开始搜索所有对象的shit属性:setShit,都没有报错

            //vs.setValue("shit", "hehe");

     

            return SUCCESS;

        }

     

    Jsp页面代码:

    <%

            ValueStack vs = ActionContext.getContext().getValueStack();

            Object obj1 = vs.findValue("month");

            System.out.println(obj1);

            //打印第二个对象的month属性

            obj1 = vs.findValue("[1].month");

            System.out.println(obj1);

            obj1 = vs.findValue("request");//不建议

            System.out.println(obj1);

            obj1 = vs.findValue("#request");

            System.out.println(obj1);

        %>

     

    • String findString(String expr):把OGNL表达式获取的对象转换成String

    public String execute() throws Exception {

            ValueStack vs = ActionContext.getContext().getValueStack();

            vs.setValue("#now", new Date());

            String s1 = vs.findString("#now");// 有没有错

            // 没有错的,显示的时候,Struts2框架还有个类型转换器的存在。已经把Date类型转换成了String

            System.out.println(s1);

            

            vs.setValue("#p1", "new Person()");

            //此版本会自动调用toString方法

            String s2 = vs.findString("#p1");

            System.out.println(s2);

     

            return SUCCESS;

        }

     

  • 相关阅读:
    Uploadify & jQuery.imgAreaSelect 插件实现图片上传裁剪
    Web 开发者不可不知的15条编码原则
    ASP.net 判断上传文件类型的三种方法
    《JavaScript 实战》:实现图片幻滑动展示效果
    如何构建一个很棒网站页脚(Website Footer)
    机器为什么可以学习(1)---测试和训练过程
    机器什么时候可以学习(4) --- 学习的可能性(feasibility of learning)
    算法学习--二分查找的学习
    逻辑回归-监督学习
    线性回归—监督学习
  • 原文地址:https://www.cnblogs.com/Prozhu/p/5886516.html
Copyright © 2011-2022 走看看