Сравнение строк с JSTL

У меня есть две строки, которые мне нужно сравнить, но даже если они имеют одинаковые значения или разные, они всегда входят в инструкцию...

<c:when test="#{bean.name1 != bean.name2}">
     fields that are supposed to appear _only_ when name1 is different from name2
</c:when>

Ответ 1

Проблема заключается в том, что вы, вероятно, не закрывали, когда в теге select.

если у вас есть:

    <c:choose>
    <c:when test="${bean.name1 != bean.name2}">
        fields that are supposed to appear _only_ when name1 is different from name2
    </c:when>
</c:choose>

Он будет работать

Ответ 2

Должно ли это быть?

<c:if test="#{bean.name1 != bean.name2}">
     // code
</c:if>

EDIT: <c:when> предполагается внутри <c:choose>. Не могу спросить, почему это просто синтаксис. Это похоже на вопрос, почему if не будет работать вместо switch в C/С++/Java. Это просто разные животные.

Ответ 3

Неважно, если вы это сделаете:

<c:when test="${bean.name1 != bean.name2}">
     fields that are supposed to appear _only_ when name1 is different from name2
</c:when>

Ответ 4

Я заметил некоторую неровность при использовании c: if или c: select и c: когда внутри некоторых итерационных компонентов jsf, таких как rich: datatable. Каков полный контекст?

В качестве обходного пути мне обычно приходится обертывать вещи в a4j: outputPanel и соответственно устанавливать атрибут rendered.

Ответ 5

Попробуйте это...

<c:if test="${bean.name1 ne bean.name2}">
     fields that are supposed to appear _only_ when name1 is different from name2
</c:if>

ne = не равно

Также

# должен быть $

Ответ 6

Должно ли это быть           поля, которые должны отображаться только тогда, когда name1 отличается от name2