Struts2 ognl判断集合对象是否为空的方法
2017-10-12 12:31
218 查看
让我啰嗦两句
项目在使用struts2的时候,需要在前端对后端传过来的对象进行一个判空处理。所以就简单的使用ognl test一下,但是bug就这么出来了。
简单看一下:
使用struts2最麻烦的一点就是看错误提示了。在没有定义error页面的时候控制台报错都是这样一堆似是而非的片段。排错就显得非常困难了。当然,我也没有什么好的方法,只能设置几个断点调试判断错误了。
还好,我的代码直觉还是蛮不错的。
经过排查,发现是jsp页面编译出错。(话说这个控制台的错误提示真的没什么用)
判空方法:使用size()
其实可能是网上各自的struts2版本不同吧,网上许多判空方法都是如下所示:
下面是编译出错的代码:
但是在我的电脑上运行就出问题了,后来经过修改:
代码成功运行。
这里解释一下%{}的作用,%{}其实就是强制将大括号里面的字符串解析为ognl表达式,之前的代码运行错误可能就是test=”“将其直接当做字符串处理了。
项目在使用struts2的时候,需要在前端对后端传过来的对象进行一个判空处理。所以就简单的使用ognl test一下,但是bug就这么出来了。
简单看一下:
No result defined for action action.LoginAction and result error at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:369) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:271) ..... //省略一大截
使用struts2最麻烦的一点就是看错误提示了。在没有定义error页面的时候控制台报错都是这样一堆似是而非的片段。排错就显得非常困难了。当然,我也没有什么好的方法,只能设置几个断点调试判断错误了。
还好,我的代码直觉还是蛮不错的。
经过排查,发现是jsp页面编译出错。(话说这个控制台的错误提示真的没什么用)
判空方法:使用size()
其实可能是网上各自的struts2版本不同吧,网上许多判空方法都是如下所示:
下面是编译出错的代码:
<s:if test="#session.downloadFileList.size()!=0"> <tr><th>文件名</th><th>上传者</th></tr> <s:iterator value="#session.downloadFileList" var="map"> <tr><td><a href="download.action?fileName=${map.value.filePath}">${map.key}</a></td><td>${map.value.author}</td></tr> </s:iterator> <tr><td><a href="mulDownload.action">打包下载</a></td></tr> </s:if> <s:else> 待下载列表为空,等待用户上传文件 </s:else>
但是在我的电脑上运行就出问题了,后来经过修改:
<s:if test="%{#session.downloadFileList.size()!=0}">
代码成功运行。
这里解释一下%{}的作用,%{}其实就是强制将大括号里面的字符串解析为ognl表达式,之前的代码运行错误可能就是test=”“将其直接当做字符串处理了。
相关文章推荐
- S7.1_Struts2_OGNL OGNL对象导航图范例&OGNL方法调用范例还有集合访问的范例
- Map.containsKey方法——判断Map集合对象中是否包含指定的键名
- Map.containsKey方法——判断Map集合对象中是否包含指定的键名
- Map.containsKey方法——判断Map集合对象中是否包含指定的键名
- Map.containsKey/Map.containsValue方法——判断Map集合对象中是否包含指定的键名
- 集合Set判断对象是否相等的equals和hashCode
- jQuery判断对象是否存在的方法
- 多种方法判断Javascript对象是否存在
- 判断游戏对象是否在摄像机视口的一个方法
- python判断一个集合是否为另一个集合的子集方法
- Android开发中“是否”判断方法集合
- JVM中判断对象是否存活的方法
- js中判断对象是否为空的三种实现方法
- java 判断对象是否为空或者传入集合对象的是否为空,以及判断数组的长度
- Struts2 用 s:if test 判断String类型的对象属性值和单字符是否相等的问题
- 原!! java直接打印一个对象时,并不是直接调用该类的toString方法 ,而是会先判断是否为null,非null才会调用toString方法
- JS判断两个对象内容是否相等的方法示例及开发面试题汇总(图)
- Java通用判断对象是否相等方法
- 判断对象是否相等---重写equals方法
- HashSet 中储存先判断对象的hash值 如果一样 在调用 对象equals方法判断是否是同一个对象