使用ognl in表达式可能会遇到的问题

编程技术  /  houtizong 发布于 3年前   67
package cn;public class A {private Integer id;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((id == null) ? 0 : id.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;A other = (A) obj;if (id == null) {if (other.id != null)return false;} else if (!id.equals(other.id))return false;return true;}}

 

<%A a1 = new A();a1.setId(1);A a2 = new A();a2.setId(2);List<A> list = new ArrayList();list.add(a1);list.add(a2);request.setAttribute("list", list);%><s:iterator value="#request.list" var="a"><s:property value="#a in #request.list"/><br/></s:iterator></body></html>

 

期望输出:
true
true

但是实际是:
true

如果配置struts.el.throwExceptionOnFailure=true,那么会得到如下异常: 

invalid comparison: cn.A and cn.A - Class: ognl.OgnlOps
File: OgnlOps.java
Method: compareWithConversion

 

原因在其ognl LanguageGuide 中也说了:

写道

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客