>>" />

比较 JSTL 中的值的正确语法 发布于 2024-10-12 10:16:22 字数 570 浏览 2 评论 0 原文

我有一个 if 语句,我正在尝试使用 JSTL 执行该语句。

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

<c:forEach items="${list}" var="values">
    <c:if test="${values.type}=='object'">
        <!-- code here -->
    </c:if>
</c:forEeach>

测试中部分的正确语法是什么 属性。这些文档对这部分并没有真正的帮助 http: //download.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/index.html

谢谢。

I have an if statement that I am trying to perform with JSTL.

My code is below (the variables values is an ArrayList that contains a user defined object and type is a private property of that object, with public getter/setter methods):

<c:forEach items="${list}" var="values">
    <c:if test="${values.type}=='object'">
        <!-- code here -->
    </c:if>
</c:forEeach>

What would be the correct syntax of the part within the test attribute. The docs don't really help with that part http://download.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/index.html

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜唯美灬不弃 2024-10-19 10:16:22

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

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

至于文档,那些 ${} 东西不是 JSTL,而是 EL(表达式语言),它本身就是一个完整的主题。 JSTL(与所有其他 JSP 标记库一样)只是利用它。您可以在此处找到更多 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'}" />

另请参阅:


顺便说一下,与具体问题无关,如果我猜你的意图是正确的,你可以也只需调用 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>

另请参阅:

The comparison needs to be evaluated fully inside EL ${ ... }, not outside.

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

As to the docs, those ${} things are not JSTL, but EL (Expression Language) which is a whole subject at its own. JSTL (as every other JSP taglib) is just utilizing it. You can find some more EL examples here.

<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'}" />

See also:


By the way, unrelated to the concrete problem, if I guess your intent right, you could also just call Object#getClass() and then Class#getSimpleName() instead of adding a custom getter.

<c:forEach items="${list}" var="value">
    <c:if test="${value['class'].simpleName eq 'Object'}">
        <!-- code here -->
    </c:if>
</c:forEeach>

See also:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文