当前位置: 代码迷 >> 综合 >> valuestack,stackContext,ActionContext.之间的关系以及action的数据在页面中取得的方法
  详细解决方案

valuestack,stackContext,ActionContext.之间的关系以及action的数据在页面中取得的方法

热度:49   发布时间:2023-12-12 03:11:18.0

1.三者之间的关系如下图所示:

relation

 

 

2.action的数据在页面中取得的方法

 

在struts2标签内部使用的表达式是%{}为OGNL表达式,在JSP页面中可以使用形式为${}为EL表达式。

EG.如果取的值在valueStack中则直接引用即可,不需要#。但是如果指定id,就需要使用#,因为这时的参数是被放在stsckcontext中,而不是valuestack。eg.bean

     2.1

       如果需要引用valueStack中的值,需要使用这样的形式。

<s:iterator value="#userList" /> //userList在action部分被保存在Request中,所以使用#加属性名来引用值。

一般只要iterator用#引用了,下面的proper不用#,直接引用就可以了。

     2.2

<s:textfield name="loginName" value="%{#request.loginNames}"/>

先用#将Stack Context中reques作用域中的loginNames属性取出,然后使用OGNL表达式%{}将其在Struts2标签内表示出来(此处%{}见得不多。要注意!!!我的理解是,一般需要表示出来文本的才使用。如iterator的value则不需要)。          

2.3

如果是在JSP页面中,且不在Struts2标签内。则使用EL表达式 ${#request.loginNames}直接在HTML语句中表示。或者使用${requestScope.loginNames}

2.4

直接给一个iterator赋一个list,使用#{'a','b',....}

如果是map,则#{'key1':'value1','key2':'value2',....}

 

  相关解决方案