Как проверить значения enum в тесте JSTL EL? - PullRequest
5 голосов
/ 29 августа 2011

В моем 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)

было открыто (ОТКРЫТО)

Почему второй тест не работает?

1 Ответ

9 голосов
/ 29 августа 2011

Не работает, потому что вы использовали $( вместо ${ для начала выражения.

Исправьте это соответственно:

<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>
...