如何在JSTL EL测试中测试枚举值?

时间:2011-08-29 13:17:28

标签: jsp enums jstl el

我的JSP中有以下块,它从ENUM值{CREATE, CREATE_FROM_CAMPAIGN, OPEN}转换为漂亮,可读的状态文本。

出于某种原因,针对'CREATE'的第一次测试有效,但针对'CREATE_FROM_CAMPAIGN'的测试却没有。

<c:choose>
    <c:when test="${entry.activity eq 'CREATE'}">
        <td>was created</td>
    </c:when>
    <c:when test="$(entry.activity eq 'CREATE_FROM_CAMPAIGN'}">
        <td>was created from campaign</td>
    </c:when>
    <c:otherwise>
        <td>was opened (${entry.activity}) </td>
    </c:otherwise>
</c:choose>

这一项的一项输出如下:

  

已打开(CREATE_FROM_CAMPAIGN)

     

被打开(OPEN)

为什么第二次测试不起作用?

1 个答案:

答案 0 :(得分:9)

它不起作用,因为您使用$(代替${来启动表达式。

相应修复:

<c:choose>
    <c:when test="${entry.activity eq 'CREATE'}">
        <td>was created</td>
    </c:when>
    <c:when test="${entry.activity eq 'CREATE_FROM_CAMPAIGN'}">
        <td>was created from campaign</td>
    </c:when>
    <c:otherwise>
        <td>was opened (${entry.activity}) </td>
    </c:otherwise>
</c:choose>