1

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> 
4

2 に答える 2

1

例外は、それapplication.lodgingが文字列ではなく数値であることを示します。そうですか?このような場合、最初に 'F'、'H'、'B' の文字列を数字に変換する必要があるかもしれません (文字を比較しますか?)

于 2009-01-19T19:03:14.430 に答える
0

この回答で提案されているように、文字列に対して単純な比較を使用しようとしましたか?

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

両方の環境で動作する可能性があります...

于 2009-01-16T12:42:46.903 に答える