Struts2创建项目5--(传值)valueStack讲解

前言,

在Struts中, 一会需要#, 一会不用#, 这样很让人懵逼,为什么会这样?
在Struts中, 所有的东西都是存在valueStack中,

默认不使用#, 就是在compoundRoot中获取
Struts2创建项目5--(传值)valueStack讲解

我们可以通过push 添加action, 在list中push(u), 可以发现u在栈顶
Struts2创建项目5--(传值)valueStack讲解

查看结果, 发现u里的老张没有密码呀, 为什么可以获取密码, 仔细一看, 密码是UserAction中的密码, 这是为什么???

Struts2创建项目5--(传值)valueStack讲解

${usernmae}---${passwd}, 首先在栈顶的u找到老张的username, 但是User中没有passwd属性, 所以继续往栈底找,找到了UserAction的passwd 123,

如果我们要获取栈底的UserAction的username,该如何获取, 可以使用#root[1].username获取, 因为CompoundRoot是一个list, 默认使用#root[0],也就是获取栈顶的action, 这样我们可以通过#root[index]进行操作action

如果你想看valueStack的内容, 可以使用<s:debug/>标签

Struts2创建项目5--(传值)valueStack讲解