更正语法以比较JSTL中的值

我有一条if语句试图与JSTL一起执行。

我的代码在下面(变量值是一个ArrayList,其中包含用户定义的对象,类型是该对象的私有属性,带有公共getter / setter方法):

<c:forEach items="${list}" var="values">

<c:if test="${values.type}=='object'">

<!-- code here -->

</c:if>

</c:forEeach>

test属性中零件的正确语法是什么?该文档并没有真正帮助该部分http://download.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/index.html

谢谢。

回答:

需要在EL内部${ ... }而不是外部完全评估比较。

<c:if test="${values.type eq 'object'}">

对于文档而言,这些${}东西不是JSTL,而是EL(表达语言),它本身就是一个完整的主题。JSTL(和其他所有JSP

taglib一样)都在利用它。您可以在此处找到更多EL示例。

<c:if test="#{bean.booleanValue}" />

<c:if test="#{bean.intValue gt 10}" />

<c:if test="#{bean.objectValue eq null}" />

<c:if test="#{bean.stringValue ne 'someValue'}" />

<c:if test="#{not empty bean.collectionValue}" />

<c:if test="#{not bean.booleanValue and bean.intValue ne 0}" />

<c:if test="#{bean.enumValue eq 'ONE' or bean.enumValue eq 'TWO'}" />

也可以看看:

  • 我们的EL Wiki页面


顺便说一句,与具体问题无关,如果我猜对了你的意图,还可以先打电话Object#getClass(),然后Class#getSimpleName()添加一个自定义getter。

<c:forEach items="${list}" var="value">

<c:if test="${value['class'].simpleName eq 'Object'}">

<!-- code here -->

</c:if>

</c:forEeach>

以上是 更正语法以比较JSTL中的值 的全部内容, 来源链接: utcz.com/qa/407301.html

回到顶部