ValueStack理解与实践

    ValueStack对象是Struts2中一个重要的对象,它贯穿整个Action的生命周期,每个Action类的对象实例会拥有一个ValueStack对象。
     在ValueStack对象中主要封装了两个对象,一个是Context,另一个是栈。其中Context是一个Map对象,其操作方法主要是put()与get()方法;而栈是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。它的主要操作方法是push()、pop()、peek()方法。
   

     在项目实践中,如显示列表数据,可以将其查询到的数据List存放于Context中,其方法如下:

     ActionContext.getContext().put("departmentList", departmentList);

     而在jsp页面中,可使用<s:iterator value="#departmentList">迭代数据,由于Context是Map结构所以需要加上#号。

     如编辑数据时,需要显示回显数据,可以将数据压到栈顶,代码如下:

     // 准备回显的信息
     Department department = departmentService.getById(model.getId());
     ActionContext.getContext().getValueStack().push(department);

     那么在JSP页面中直接可以使用Struts2标签取出。

    

扫描二维码关注公众号,回复: 725606 查看本文章

    

猜你喜欢

转载自free0007.iteye.com/blog/1886127