您的位置:首页 > 编程语言 > Java开发

Struts2 ognl判断集合对象是否为空的方法

2017-10-12 12:31 218 查看
让我啰嗦两句

项目在使用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=”“将其直接当做字符串处理了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: