Сравнение строк с JSTL
У меня есть две строки, которые мне нужно сравнить, но даже если они имеют одинаковые значения или разные , это всегда вводит оператор...
<c:when test="#{bean.name1 != bean.name2}">
fields that are supposed to appear _only_ when name1 is different from name2
</c:when>
6 ответов
проблема в том, что вы, вероятно, не обернули when в теге выбора.
если у вас есть:
<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>
Он будет работать
должно быть ?
<c:if test="#{bean.name1 != bean.name2}">
// code
</c:if>
EDIT:<c:when>
должен быть внутри <c:choose>
. Не могу спросить почему, это просто синтаксис. Это как спрашивать, почему if
не будет работать вместо switch
в C / C++ / Java. Они просто разные животные.
имеет ли значение, если вы это сделаете:
<c:when test="${bean.name1 != bean.name2}">
fields that are supposed to appear _only_ when name1 is different from name2
</c:when>
Я заметил некоторую неустойчивость при использовании c:if или c:choose и c:when внутри некоторых компонентов итерации jsf, таких как rich: datatable. Каков полный контекст?
в качестве обходного пути мне обычно нужно было бы обернуть вещи в a4j: outputPanel и соответственно установить атрибут визуализации.
попробуйте это...
<c:if test="${bean.name1 ne bean.name2}">
fields that are supposed to appear _only_ when name1 is different from name2
</c:if>
ne = не равно
и
# должна быть $