Сравнение строк с 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