值栈

15 篇文章 0 订阅

Strtus2的值栈(ValueStack)对象[利用了OgnlContext对象]
ValueStack接口,最终在项目中存数据对象是它的实现类OgnlVauleStack
ValueStack数据存储结构:分为List栈(根栈) 和Map栈(非根栈 )
在这里插入图片描述
使用OGNL表达式取List栈数据不需要#
非根栈的对象取值我们需要给前面添加#,例如:#request,#session,#application

后台代码:

        public String vs(){
        //获取ActionContext对象
        ActionContext ac = ActionContext.getContext();
        //获取值栈对象
        ValueStack vs = ac.getValueStack();
        //往值栈中存数据
        vs.push("abc");
        User user = new User(1,"张三",20);
        vs.push(user);
        vs.push("def");//栈顶

        //数据存到域中
        ac.getContextMap().put("req_data","req_datas");
        ac.getSession().put("session_data","session_datas");
        ac.getApplication().put("app_data","app_datas");
        return SUCCESS;
    }

页面代码

  <s:debug></s:debug>
  <!-- 取栈顶数据 -->
  <s:property value="top"></s:property><br/>
  <!-- 直接取值栈内的数据 -->
  <s:property value="name"></s:property>
  <hr/>
  <!--  域中取 数据 必须加#-->
  req:<s:property value="#request.req_data"></s:property>
  session:<s:property value="#session.session_data"></s:property>
  application:<s:property value="#application.app_data"></s:property>

OGNL表达式
结合struts标签一起使用

  <!-- 迭代标签-->
  <!-- OGNL表达式  在jsp中创建list集合(不需要#)-->
  <s:iterator value="{'tom','jack','lucy'}" var="name">
    <s:property value="#name"></s:property>
  </s:iterator>
  <br/>
  <!-- OGNL表达式  在jsp中创建Map集合 (需要#) -->
  <s:iterator value="#{'en':'england','ch':'china','jp':'japan'}" var="entry">
    <s:property value="#entry.key"></s:property>--<s:property value="#entry.value"></s:property>
  </s:iterator>

  <br/>
  <!-- 判断标签 -->
  <s:set var="age" value="21"></s:set>
  <s:if test="#age>23">
    老了
  </s:if>
  <s:else>
    年轻
  </s:else>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值