之前工作中当遇到JSP在struts2取值的时候,对于# % 什么的使用一直处于不太明白的状态(虽然之前学习struts2的时候有学到过)。
今天再次遇到,整理一下。
struts2上下文如上图所示。其中值栈里的内容我们经常用到的主要就是当前action的属性值。可以用s:debug标签看到。
对于在JSP里取值栈里的值:<s:property
value
=
"artist.bio"
/>
值栈里的值是可以“升级”的,使用的是set标签,其中可以用scope指明要升级到的范围:<
s:set
name
=
"artistName"
value
=
"artist.name"
scope
=
"session"
/>
这时候的取值:<
s:property
value
=
"#session['artistName']"
/>
可以看到,在非值栈(context)取值会加上#,这个是ognl语法。
特别要提到struts2的iterator标签:<s:iterator value="deptVO" var="dept">
var定义的变量,不是在值栈里的,我猜测是在attr里面的(不确定,求大神指点。。。)。所以它的取值也需要加上#:<s:property value="#dept.manager.gender"/>