使用Struts2中的OGNL投影过滤时取不到值

使用Struts2中的OGNL投影过滤时取不到值,第1张

List集合对象需要循环的

<s:iterator id="List" value="#Request键值">

<s:property value="List"/>//如果是单个值

<s:property value="Listname"/>//如果存的是对象,就属性

</s:iterator>

1、struts2用的是ognl,它与jstl取值有点不同。

2、ognl与jstl判断属性是否为空均是通过test来判断。

3、jstl判断语法:<c:if test="${list==null}"> </c:if>。

4、struts2的ognl从request中取值不能直接$(),必须用#request如下:

<s:if test="#requestlist==null"> </s:if>。

#requestmapkeySet() 拿到map的keySet,用于上述代码的第一层循环,赋值到sobj

第一层循环相当于创建了一个Iterator对象,用于迭代keySet,每次迭代取值赋予sobj

第二层循环将刚才取到的sobj(也就是一个key)作为键值,从map里取出对应的value

在公司金融云中台项目中,需要对接不同的资金方和资产方,对接的接口JSON报文形式也是各式各样。经常需要获取某个json字段,不得不层层获取json对象,非常不方便。

后来发现Ognl(Object Graph Navigation Language 对象导航图语言)能够通过EL表达式获取对象的属性值。根据这一特性,经过封装,轻松实现获取JSON多层嵌套数据。

工具特点

1、方便获取JSON多层嵌套数据,无需层层获取json对象

2、当json字段值为空字符串时,返回空字符串

3、当json字段不存在时,返回NULL

POM引入

封装OGNL工具类

测试

JSON示例

测试结果

你都用struts2了还取servlet的session,request干嘛

你不就是想把值传给jsp吗,直接用struts2传就是的了,干嘛还用什么session、request的。

我也正好在看这个,把我刚理解的给你说下吧,不一定对。

Map request=(Map)ActionContextgetContext()get("request");

Map request // 声明一个名字为request的Map对象(这个名字不是request也可以)

然后对request进行实例化,但是因为 ActionContextgetContext()get("request");不是Map类型的

所以前面需要加“(Map)”进行强制转换。

“ActionContext”是“xwork-core-223jar”(反正就是Xwork了 也许咱们的版本不一样,有兴趣的话你可以去了解一下Xwork)下面的“comopensymphonyxwork2ActionContext;”包,

后面的getContext()get("request");就都是ActionContext里面的方法(函数)了。

注意的是,“get("request");”括号里面的request不能变,这个request不是你前面声明的request对象,具体了解可以去上面说的包下面看源码,

本来想给你大概说下ActionContext的,但是我这代码关联不上,你自己去看吧。

据体用法的话,既然已经有request这个对象了,比如你可以在JSP页面中加

<%= requestgetAttribute("list") %>看看效果。

或者假如你要希望数据库写数据,要用到”list“那么可以调用这个action中的这个reuest,

例如 Map m = actionrequest;

最后,就像J2SE中的Main()方法一样,这都是固定的,记住就可以了。至于用法那就多种多样,光说具体用法那就说死了,但事实是很灵活的东西,看需求吧。

两年后再补充一点吧,ActionContext对象里面封装了Action用到的一些数据。另外struts2把我们的request对象做了一些修改,重新封装成它自己需要的并放在了ActionContext对象中。

action向jsp传值的方法有三种:

1用requestsetAttribute()方法,不过只适用于请求转发,不可用于重定向

2用sessionsetAttribute()方法

3用struts2标签,在Java类中定义这个值对象,然后赋值,并且给出setter和getter方法,在jsp页面中,使用

<s:property value=""/>来获取

以上就是关于使用Struts2中的OGNL投影过滤时取不到值全部的内容,包括:使用Struts2中的OGNL投影过滤时取不到值、s标签怎么判断一个值是否为空、大家看看 这句 OGNL表达式 是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9302441.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存