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

让我啰嗦两句

项目在使用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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值