struts2中怎么引用值栈中的对象

struts2中如何引用值栈中的对象
在jsp页面是直接面向值栈操作,所以值栈的内容可以直接用名字来引用。值栈外的如session就要用OGNL语法中的#来操作。
    对于值栈来说,struts2有专门的tag叫<s:property >来引用值栈内容,如下例:
<s:property value="artist.bio" />session是值栈外的(全局的,或称根级别),所以要用OGNL的#符号表达式来引用session里的对象,如<s:property value="#session['artistBio']" />
    可以先把一个变量级别升高成为全局,然后用#符号来引用值,那么用s:set标签来做,如
<s:set name="artistName" value="artist.name" /> 
<s:set name="artistBio" value="artist.bio" /> 
<b>Album Title :</b> <s:property value="title" /> <br>
<b>Artist Name :</b> <s:property value="#artistName" />
<br> <b>Artist Bio :</b> <s:property value="#artistBio" /> 

===》级别高了,不在值栈内就不能直接引用了。。。。。需要加#号
   假如想让对象不但级别高了(全局的)在整个session周期内持久,就要加上scope,如
<s:set name="artistName" value="artist.name" scope="session" />
<s:set name="artistBio" value="artist.bio" scope="session" />
<b>Album Title :</b> <s:property value="title" /> <br>
<b>Artist Name :</b> <s:property value="#session['artistName']" /> <br>
<b>Artist Bio :</b> <s:property value="#session['artistBio']" /> <br>

   下面还有push标签,用来把对象放到值栈顶端:
<b>Album Title :</b> <s:property value="title" /> <br>
<s:push value="artist">
<b>Artist Name :</b> <s:property value="name" /> <br>
<b>Artist Bio :</b> <s:property value="bio" /> <br>
</s:push>
那么<s:bean>这个标签,用来在页面实例化一个bean放在值栈中,它的生存周期就是到了</s:bean>为止就结束了,所以说假如要用<s:property>这个标签来引用该bean的属性的话,一定要在<s:bean>和</s:bean>标签之中用。如下面例子:
<s:bean name="vaannila.CurrencyConverter"> 
    <s:param name="dollars" value="100" /> 
100Dollars = 
<s:property value="rupees" />
Rupees
</s:bean>
那么假如在bean标签之外引用呢,因为这时候这个bean的生命周期结束了,已经不在值栈内了,所以要用的话,需要事先在前面bean的声明地方加上一个变量声明,使其成为全局的对象,然后再像引用session变量那样的方式来引用它,如下例:
<s:bean name="vaannila.CurrencyConverter" var="converter"> 
<s:param name="dollars" value="100"></s:param>
</s:bean>
100 Dollars =
<s:property value="#converter.rupees" />
Rupees