Jsp OGNL中的条件检查
我想用对象图导航语言(OGNL)表示以下JSTL代码Jsp OGNL中的条件检查,jsp,struts2,ognl,Jsp,Struts2,Ognl,我想用对象图导航语言(OGNL)表示以下JSTL代码 我试过以下方法 <s:set var="idError"><s:fielderror fieldName="transporterId"/></s:set> <s:set var="chkError"><s:fielderror fieldName="chk"/></s:set> <s:set var="currentPageError"><s:fi
我试过以下方法
<s:set var="idError"><s:fielderror fieldName="transporterId"/></s:set>
<s:set var="chkError"><s:fielderror fieldName="chk"/></s:set>
<s:set var="currentPageError"><s:fielderror fieldName="currentPage"/></s:set>
<s:if test="%{(#idError!=null and #idError!='') or (#chkError!=null and #chkError!='') or (#currentPageError!=null and #currentPageError!='')}">
<div class="errorblock">
<s:fielderror fieldName="transporterId"/>
<s:fielderror fieldName="chk"/>
<s:fielderror fieldName="currentPage"/>
</div>
</s:if>
这仅适用于第一个条件检查,#idError=空值和#idError!=''代码>。其余的条件从未被评估为真
使用OGNL表示给定JSTL代码的正确方法是什么?我不知道有问题,但在本例中,我尝试根据特定字段是否有错误来显示错误消息
在这种情况下,由于字段错误存储在fieldErrors
映射中,因此可以使用
检查特定字段错误,如下所示
<s:if test="fieldErrors.containsKey('transporterId') or fieldErrors.containsKey('chk') or fieldErrors.containsKey('currentPage')">
<div class="errorblock">
<s:fielderror fieldName="transporterId"/>
<s:fielderror fieldName="chk"/>
<s:fielderror fieldName="currentPage"/>
</div>
</s:if>
这足以满足我的要求
这也可以通过像往常一样使用以下简单的条件检查来实现
<s:if test="hasFieldErrors()">
<div class="errorblock">
<s:fielderror fieldName="transporterId"/>
<s:fielderror fieldName="chk"/>
<s:fielderror fieldName="currentPage"/>
</div>
</s:if>
但是在这种情况下,我只需要检查所选字段,看看它们是否产生了一些错误,而不是检查请求提交的所有字段。因此,需要像第一种情况一样检查所有那些选定的字段(不是全部)
这些选定字段通常是隐藏字段或查询字符串参数
由它们生成的任何错误都显示在块中的一个位置,而由其他字段(如
等输入组件)生成的任何错误都显示在它们旁边
<s:if test="hasFieldErrors()">
<div class="errorblock">
<s:fielderror fieldName="transporterId"/>
<s:fielderror fieldName="chk"/>
<s:fielderror fieldName="currentPage"/>
</div>
</s:if>