Struts2迭代器标记null对象不会抛出异常

时间:2014-07-24 04:16:24

标签: struts2

我正在将struts 1迁移到struts 2.X

在请求范围中设置了属性,我在struts 1中访问我的jsp,如下所示:当bean不在范围内时我得到" .servlet.jsp.JspException:在任何范围内都找不到bean cat&#34 ;

<div class="titlePageCatalog"><bean:write name="desccategory" property="name" /></div>

在struts 2中我修改为

<s:iterator value="#request.cat">
<div class="titlePageCatalog">  <s:property value = "name"/></div>
</s:iterator>

但在struts 2中我没有任何例外。基本上我需要在没有设置cat时抛出异常。

任何人都可以建议如何在未设置

时获得jspexception

1 个答案:

答案 0 :(得分:1)

您应该在处理请求的Java代码中抛出异常,是您的视图的一部分,您应该只关注提供结果/响应。抛出/处理的异常应该是您的Controller / Business层作业的一部分。这必须是s:iterator不会在版本中为 引发任何未调用的原因之一。

如果您的视图必须使用属性cat,则应在从struts操作返回结果之前进行检查。如果您希望cat为null并向用户显示相应的消息,那么您应该使用类似的内容

<s:if test="%{cat.isEmpty()}">
   Some error occurred in this part of page but rest of result is being displayed
</s:if>
<s:else>
    <s:iterator value="cat">
        Your display code.
    </s:iterator> 
</s:else>