zoukankan      html  css  js  c++  java
  • struts框架问题六之从值栈中获取值

      6. 问题六: 在JSP中获取值栈的数据
        * 总结几个小问题:
            > 访问root中数据 不需要#
            > 访问context其它对象数据 加 #
            > 如果向root中存入对象的话,优先使用push方法。
            > 如果向root中存入集合的话,优先要使用set方法。
    
        * 在OgnlContext中获取数据
            > 在Action中向域对象中存入值
            > request:<s:property value="#request.username"/>
            > session:<s:property value="#session.username"/>
            > application:<s:property value="#application.username"/>
            > attr:<s:property value="#attr.username"/>
            > parameters:<s:property value="#parameters.cid"/>
    
    6.1 代码如下
        <!--
            // vs.push("美美");这句代码在action中写
            // 获取到栈顶的值
            <s:property value="[0].top"/>这句代码在jsp中写的。方括号里面的值为从root栈中的第几个位置开始读,一直读到最后。
        -->
    
        <!--
            // 栈顶是map集合,通过key获取值
            vs.set("msg", "小凤");
            <s:property value="[0].top.msg"/>
        -->
    
        <!--  
            vs.push(user);
            // 栈顶放user对象
            <s:property value="[0].top.username"/>
            <s:property value="[0].top.password"/>
            // [0].top 关键字是可以省略的  findValue()
            <s:property value="username"/>
        -->
    
        <!--
        User user=new User();
        user.setusername("zhangsan");
        user.setpassword("123");
        vs.set("user", user); <s:property value="[0].top.user.username"/> <s:property value="[0].top.user.password"/> // 省略关键字,如果想要获取的元素本来就是栈顶元素的时候,可以省略前面的[0].top <s:property value="user.username"/> --> <!-- // 在ValueStack1Action提供了成员的属性 private User user = new User("小泽","456"); public User getUser() { return user; } public void setUser(User user) { this.user = user; } User user = new User("小苍","123"); vs.set("user", user); // 从栈顶开始查找,找user的属性,显示名称 返回的小苍 <s:property value="user.username"/> // [1].top获取ValueStack1Action [1].top.user返回user对象 [1].top.user.username获取对象的属性名称 <s:property value="[1].top.user.username"/> --> <!-- 栈顶是list集合 vs.push(ulist); <s:property value="[0].top[0].username"/> <s:property value="[0].top[1].username"/> --> <!-- vs.set("ulist", ulist); <s:property value="ulist[0].username"/> --> <!-- 迭代的标签 属性 * value 要迭代的集合,需要从值栈中获取 * var 迭代过程中,遍历的对象 * var编写上,把迭代产生的对象默认压入到context栈中,从context栈取值,加#号 * var不编写,默认把迭代产生的对象压入到root栈中 for(User user:ulist){} // 编写var的属性 <s:iterator value="ulist" var="u"> <s:property value="#u.username"/>加了#存到了context中 <s:property value="#u.password"/> </s:iterator> // 没有编写var关键字 <s:iterator value="ulist"> <s:property value="username"/>没有加#存到了root中 <s:property value="password"/> </s:iterator> --> <!-- 从context栈中获取值,加#号 HttpServletRequest request = ServletActionContext.getRequest();向context中存储值,就是向域中存储值 request.setAttribute("msg", "美美"); request.getSession().setAttribute("msg", "小风"); <s:property value="#request.msg"/> <s:property value="#session.msg"/> <s:property value="#parameters.id"/> <s:property value="#attr.msg"/> --> <!-- 在JSP页面上,查看值栈的内部结构 --> <s:debug></s:debug>
  • 相关阅读:
    IDEA中设置自动build-改动代码,不用重启工程,刷新页面即可
    前端上传大文件并支持中途取消上传
    网页上传大文件并支持中途取消上传
    HTTP上传大文件并支持中途取消上传
    B/S上传大文件并支持中途取消上传
    如何将word公式粘贴到CKEditor里面
    如何将word公式粘贴到HTML编辑器里面
    如何将word图片粘贴到HTML编辑器里面
    如何将word图片粘贴到Web编辑器里面
    如何将word公式粘贴到Web编辑器里面
  • 原文地址:https://www.cnblogs.com/wyhluckdog/p/10124739.html
Copyright © 2011-2022 走看看