Исключение JSTL при сравнении строки - PullRequest
1 голос
/ 16 января 2009

У меня есть следующий код в файле JSTL:

<c:choose>
    <c:when test="${application.lodging eq 'F'}"><bean:message key="courseapplication.lodgingF"/></c:when>
    <c:when test="${application.lodging eq 'H'}"><bean:message key="courseapplication.lodgingH"/></c:when>
    <c:when test="${application.lodging eq 'B'}"><bean:message key="courseapplication.lodgingB"/></c:when>
</c:choose>

$ application.lodging - F, но я получаю следующую ошибку:

SEVERE: ServletException in '/administration/jsp/applications.jsp': An exception occured trying to convert String "F" to type "java.lang.Long"
org.apache.jasper.JasperException: Exception in JSP: /administration/jsp/applications.jsp:20

17: <h2><a href="application.do?id=${application.id}&amp;type=S">${application.name}</a></h2>
18: <h3>
19: <c:choose>
20:     <c:when test="${application.lodging eq 'F'}"><bean:message key="courseapplication.lodgingF"/></c:when>
21:     <c:when test="${application.lodging eq 'H'}"><bean:message key="courseapplication.lodgingH"/></c:when>
22:     <c:when test="${application.lodging eq 'B'}"><bean:message key="courseapplication.lodgingB"/></c:when>
23: </c:choose>

На моем локальном сервере с Apache Tomcat 6.0 этот код не создавал никаких проблем.

В моих приложениях сервер с tomcat 5.5 выдает вышеуказанную ошибку.

Кто-нибудь знает, почему это может быть?

То же самое происходит, если я использую == вместо eq

SEVERE: ServletException in '/administration/jsp/applications.jsp': An exception occured trying to convert String "F" to type "java.lang.Long"
org.apache.jasper.JasperException: Exception in JSP: /administration/jsp/applications.jsp:20

17: <h2><a href="application.do?id=${application.id}&amp;type=S">${application.name}</a></h2>
18: <h3>
19: <c:choose>
20:     <c:when test="${application.lodging=='F'}"><bean:message key="courseapplication.lodgingF"/></c:when>
21:     <c:when test="${application.lodging=='H'}"><bean:message key="courseapplication.lodgingH"/></c:when>
22:     <c:when test="${application.lodging=='B'}"><bean:message key="courseapplication.lodgingB"/></c:when>
23: </c:choose> 

Ответы [ 2 ]

1 голос
/ 19 января 2009

Исключение указывает, что application.lodging является числом, а не строкой. Это правильно? В таком случае вам может понадобиться сначала преобразовать строки «F», «H», «B» в числа (хотите сравнить символы?)

0 голосов
/ 16 января 2009

Вы пытались использовать простое сравнение со строкой, как предложено в этом ответе ?

<c:when test="${application.lodging=='F'}"><bean:message key="courseapplication.lodgingF"/></c:when>

может работать в обеих средах ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...