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>
  • 相关阅读:
    Open source cryptocurrency exchange
    Salted Password Hashing
    95. Unique Binary Search Trees II
    714. Best Time to Buy and Sell Stock with Transaction Fee
    680. Valid Palindrome II
    Java compiler level does not match the version of the installed Java project facet.
    eclipse自动编译
    Exception in thread "main" java.lang.StackOverflowError(栈溢出)
    博客背景美化——动态雪花飘落
    java九九乘法表
  • 原文地址:https://www.cnblogs.com/wyhluckdog/p/10124739.html
Copyright © 2011-2022 走看看