2009-01-16 73 views
1

我有一個JSTL文件中的下一個代碼: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> 

回答

0

你嘗試使用對字符串進行簡單的比較,如suggested in this answer

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

可能在兩種環境中工作......

1

異常指示該application.lodging是數字,而不是字符串。是對的嗎?在這種情況下,您可能需要先將「F」,「H」,「B」字符串轉換爲數字(您是否想比較字符?)