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

来源:互联网 发布:辅导软件 编辑:程序博客网 时间:2024/05/16 07:27

让我啰嗦两句

项目在使用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=”“将其直接当做字符串处理了。

阅读全文
0 0
原创粉丝点击