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

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

10 голосов
/ 12 февраля 2010

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

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

Ответы [ 6 ]

7 голосов
/ 12 февраля 2010

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

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

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

Это будет работать

4 голосов
/ 12 февраля 2010

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

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

РЕДАКТИРОВАТЬ: <c:when> должно быть внутри <c:choose>. Не могу спросить почему, это всего лишь синтаксис. Это все равно что спросить, почему if не будет работать вместо switch в C / C ++ / Java. Это просто разные животные.

0 голосов
/ 12 февраля 2010

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

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

0 голосов
/ 12 февраля 2010

Имеет ли значение, если вы сделаете это:

<c:when test="${bean.name1 != bean.name2}">
     fields that are supposed to appear _only_ when name1 is different from name2
</c:when>
0 голосов
/ 12 февраля 2010

Должно ли это быть поля, которые должны появляться только , если имя1 отличается от имени2

0 голосов
/ 12 февраля 2010

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

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

ne = не равно

Также

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

...