关于action中的属性值存储的位置

来源:互联网 发布:手机淘宝延迟收货 编辑:程序博客网 时间:2024/05/20 23:33

 action中的setter/getter方法;不管是获得还是设置过的值,只要在action中声明了属性都在最终存放在valuestack中。在前台界面可以直接取得在action中赋值的属性,也可以在action中直接获得在前台界面中填入的值,只要是在action中声明了相关的属性。

   如:在前台界面中需要填入值的文本框中的属性name=sheetinfo.username,这种方法,就是通过在action中声明sheetinfo对象,然后在程序运行的过程中就会通过setter方法将username属性设置到sheetinfo这个对象的对应的属性上,然后通过getter方法就可以在action中获得相关的属性了。

    以上通用的方法就是直接在action中声明个和前天文本框同名的属性,然后在action中进行获取。

    Action的实例,总是放到value stack中。
    因为Action放在stack中,而stack是root(根对象),所以对Action中的属性的访问就可以省略#标记。但是,要访问ActionContext中其它对象的属性,就必须要带上#标记,以便让OGNL知道,不是从根对象,而是从其它对象中去寻找。
    Struts2自身的Tag会根据value中的OGNL表达式,在ValueStack中寻找相应的对象。因为actio在ValueStack的顶部,所以默认情况下,Struts2的Tag中的OGNL表达式将查找action中的变量。请注意,value中的内容直接是OGNL表达式,无需任何el的标签包装。 
   对于每个请求,都建立一个与相应Action对应的ActionContext作为OGNL的上下文环境和ValueStack,并且把Action压入ValueStack。
   在请求进入Action代码前,通过某种通用的机制,搜集页面上传递过来的参数,并调用OGNL相关的代码,对Action进行设值。

0 0