struts2值栈 set和push和el在jsp中取值

2024-01-13 05:58
文章标签 set push el 取值 jsp struts2 值栈

本文主要是介绍struts2值栈 set和push和el在jsp中取值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 值栈包含两个 context(域对象框架存入) 和根对象(push,set) //源码dofilter----actionContext

    push通过压栈后的数据是在最顶层,用 value="top" 来取值即可;

  • 值栈后进先出的原则  

    set和map的混到一起 从上到下取值;[0].name; set一般是集合;push一般是属性

1.获取值栈对象两种方式:

1 //获取值栈  //方式一   分为root区和上下文区;
2 ActionContext.getContext.getValueStack();
3 //方式二
4 ServletActionContext.getValueStack(ServletActionContext.getRequest); 

2.

1.set和push set存储的是集合
2.域对象是上下文;取值的是#request.name ,省掉了get,直接写属性
3.root根对象,省掉了root 方法要写全; length(); get可以不写
表单提交可以获取EL:name //源码是request重写getAttribute;
模型驱动 ;自动存储到valuestack的root区中

值栈:分为根对象和上下文.  上下文存储的是域对象request,pageContext等等

1)根对象存入的是对象的属性以键值对的方式.

2)并且是后存入的在最上边,先存人的在最下边

3)取值的是从上边取值,下边的取不到.但是可以通过 [第一个对象].属性取到

2. 值栈中的值获取

 


 取值的3中方式 set 和push 和 el 
//set可以取到的是集合,push最好取到的是对象;    set: key.属性名  push: 属性名set("users",users);
//1.迭代的取值方式  
jsp中的标签<s:iterator var="user" value="users">  //values是放入到域中的集合, user是每一个遍历的对象<s:propety value="#user.u_id" />                //迭代器要用#取值${user.u_id}                        //用el 也是可以取到值<s:iterator>                  //需要迭代的取值的方式  //2.有相同的name的时候set和push同时使用example:<s:property value="name"/><s:property value="[1].name"/>  //想取值栈中第二个对象值//3.模型驱动和属性驱动获取的都是取属性   但是模型驱动创建一个对象在值栈中去
 <s:property value="name"/><s:property value="age"/>el:表达式
${name }===request.getAttribute("key");${age }
用request存入到值栈中的是(上下文)
去域对象中去取,value="#request.name";
// %的作用 不具备取 值栈的中的数据 %的作用
<s:textfield value="%{#request.name}"/>struts中的标签
<s:textfield value="%{#request.name}"/>//不解析//国际化的取值,动态取值

$的作用在国际化中使用;key= ${#request.name}
//1.配置常量 struts  
<constant name="struts.custom.i18n.resources" value="ab"></constant>
//2.创建一个ab.propertites  文件
key= hello   ${#request.name}
//3.存入值栈中
request.setAttribute("name","王五");
String text=getText("key");
sysout(text);//打印的是hello 王五..  //国际化

 

 

 

补充:根对象的取值


//三步骤:1.获取根对象2.获取上下文map集合3.表达式("#"表示的是取的是上下文map的)User user=new User();//root对象user.setName("张三");Map< String, String> map=new HashMap<>();map.put("a", "张三");map.put("b", "李四");String s="hello";String expression="length"//求长度s的长度是5;String string="#a.equals(name)";//方法一  获取name属性String string="#a.equals(getName())";//方法二        String string="equals(#root)";//和根对象自己比较 true;String string="equals(#this)";//和根对象自己比较 true;String string="@java.lang.Runtime@getRuntime().exec(\"calc.exe\")";//静态的方法 启动计算器<s:property value="@java.lang.Integer@parseInt('10')" />//静态的方法在jsp页面上展示String expression = "@java.lang.Integer@parseInt(\"10\")";//静态的方法Object value = Ognl.getValue(string, map, user);System.err.println(value);

这篇关于struts2值栈 set和push和el在jsp中取值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/600446

相关文章

poj 3050 dfs + set的妙用

题意: 给一个5x5的矩阵,求由多少个由连续6个元素组成的不一样的字符的个数。 解析: dfs + set去重搞定。 代码: #include <iostream>#include <cstdio>#include <set>#include <cstdlib>#include <algorithm>#include <cstring>#include <cm

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到

struts2中的json返回指定的多个参数

要返回指定的多个参数,就必须在struts.xml中的配置如下: <action name="goodsType_*" class="goodsTypeAction" method="{1}"> <!-- 查询商品类别信息==分页 --> <result type="json" name="goodsType_findPgae"> <!--在这一行进行指定,其中lis是一个List集合,但

vue2实践:el-table实现由用户自己控制行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的,很容易想到使用el-table来实现,它可以循环读取:data所绑定的数组,来生成行数据,不同的是: 1、table里面的每一个cell,需要放置一个input来支持用户编辑。 2、最后一列放置两个b

Android set Tag, findViewWithTag使用

设置了tag为“principal”的view ImageView principal = (ImageView) findViewById(R.id.imagen_home_0);principal.setTag("principal"); 在其它地方获取,获取已经设置了tag为“principal”的view LayoutInflater inflater = LayoutInflate

struts2的时候

在使用struts2的时候,我们在jsp中经常写这样的代码片段:      学生姓名:            考试名称:            考试分数:         其中studentScores.student.stuName是对应后台action的熟悉,action是这样写的   public class StudentExamAc

C++ STL关联容器Set与集合论入门

1. 简介 Set(集合)属于关联式容器,也是STL中最实用的容器,关联式容器依据特定的排序准则,自动为其元素排序。Set集合的底层使用一颗红黑树,其属于一种非线性的数据结构,每一次插入数据都会自动进行排序,注意,不是需要排序时再排序,而是每一次插入数据的时候其都会自动进行排序。因此,Set中的元素总是顺序的。 Set的性质有:数据自动进行排序且数据唯一,是一种集合元素,允许进行数学上的集合相

JSP 简单表单显示例子

<html><!--http://localhost:8080/test_jsp/input.html --><head><meta http-equiv="Content-Type" content="text/HTML; charset=utf-8"><title>input页面</title></head><body><form action="input.jsp" method