【问题标题】:JSTL Exception while comparing a string比较字符串时出现 JSTL 异常
【发布时间】:2010-10-01 19:16:00
【问题描述】:

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

【问题讨论】:

    标签: jstl


    【解决方案1】:

    Exception 表示 application.lodging 是数字,而不是字符串。那正确吗?在这种情况下,您可能需要先将 'F'、'H'、'B' 字符串转换为数字(要比较字符吗?)

    【讨论】:

      【解决方案2】:

      您是否尝试过对字符串进行简单比较,例如suggested in this answer

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

      可能在两种环境中都可以工作...

      【讨论】:

        猜你喜欢
        • 2011-01-16
        • 2015-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多