Ответ 1
Сравнение должно быть полностью оценено внутри EL ${ ... }
, а не снаружи.
<c:if test="${values.type eq 'object'}">
Что касается документов, те ${}
вещи не JSTL, а EL (язык выражений), который является целым предметом сам по себе. JSTL (как и любой другой тег-словарь JSP) просто использует его. Вы можете найти еще несколько примеров EL здесь.
<c:if test="#{bean.booleanValue}" />
<c:if test="#{bean.intValue gt 10}" />
<c:if test="#{bean.objectValue eq null}" />
<c:if test="#{bean.stringValue ne 'someValue'}" />
<c:if test="#{not empty bean.collectionValue}" />
<c:if test="#{not bean.booleanValue and bean.intValue ne 0}" />
<c:if test="#{bean.enumValue eq 'ONE' or bean.enumValue eq 'TWO'}" />
См. также:
Кстати, не связанный с конкретной проблемой, если я предполагаю, что вы намерены правильно, вы также можете просто вызвать Object#getClass()
, а затем Class#getSimpleName()
вместо добавления пользовательского получателя.
<c:forEach items="${list}" var="value">
<c:if test="${value['class'].simpleName eq 'Object'}">
<!-- code here -->
</c:if>
</c:forEeach>