struts2中怎么引用值栈中的对象
struts2中如何引用值栈中的对象
在jsp页面是直接面向值栈操作,所以值栈的内容可以直接用名字来引用。值栈外的如session就要用OGNL语法中的#来操作。
对于值栈来说,struts2有专门的tag叫<s:property >来引用值栈内容,如下例:
<s:property value="artist.bio" />session是值栈外的(全局的,或称根级别),所以要用OGNL的#符号表达式来引用session里的对象,如<s:property value="#session['artistBio']" />
可以先把一个变量级别升高成为全局,然后用#符号来引用值,那么用s:set标签来做,如
===》级别高了,不在值栈内就不能直接引用了。。。。。需要加#号
假如想让对象不但级别高了(全局的)在整个session周期内持久,就要加上scope,如
下面还有push标签,用来把对象放到值栈顶端:
在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