Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp OGNL中的条件检查_Jsp_Struts2_Ognl - Fatal编程技术网

Jsp OGNL中的条件检查

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

我想用对象图导航语言(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: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>