关于PSTL的多分枝判断的语句问题

关于PSTL的多分枝判断的语句问题

老师,我跟着课件中的操作,界面却显示 500的错误,当我把多分枝的语句删去,又正常的显示,代码经过反复的检查,确认没有问题,不知道该如何的操作

jsp

<!-- choose  when  otherwise -->

<c:choose>

<c:when test="${grade=='D' }">

<h1>此语句被执行!</h1>

</c:when>

</c:choose>


HTTP Status 500 – Internal Server Error

Type Exception Report

Message An exception occurred processing JSP page [/core.jsp] at line [23]

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.apache.jasper.JasperException: An exception occurred processing JSP page [/core.jsp] at line [23]

20:
21: <!-- choose  when  otherwise -->
22: <c:choose>
23: <c:when test="${grade=='D' }">
24: <h1>姝よ鍙ヨ鎵ц锛�</h1>
25: </c:when>
26: </c:choose>


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:617)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:514)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.imooc.jstl.JstlServlet.doGet(JstlServlet.java:31)
javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Root Cause

javax.el.ELException: Cannot convert [D] of type [class java.lang.String] to [class java.lang.Long]
org.apache.el.lang.ELSupport.coerceToNumber(ELSupport.java:400)
org.apache.el.lang.ELSupport.coerceToNumber(ELSupport.java:379)
org.apache.el.lang.ELSupport.equals(ELSupport.java:173)
org.apache.el.parser.AstEqual.getValue(AstEqual.java:39)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:944)
org.apache.jsp.core_jsp._jspx_meth_c_005fwhen_005f0(core_jsp.java:290)
org.apache.jsp.core_jsp._jspx_meth_c_005fchoose_005f0(core_jsp.java:258)
org.apache.jsp.core_jsp._jspService(core_jsp.java:150)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.imooc.jstl.JstlServlet.doGet(JstlServlet.java:31)
javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Note The full stack trace of the root cause is available in the server logs.


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好。对于报错,我们首先要学会查看报错信息。以便进一步定位问题,寻找解决方案。

http://img1.sycdn.imooc.com//climg/5cf087990001c70508310163.jpg

试着翻译一下,大体意思是,EL异常,不能将java.lang.String类型的“D”转换成java.lang.Long类型。回头再看发生异常的位置,在23行,也就是${grade == 'D'}出错。

http://img1.sycdn.imooc.com//climg/5cf08837000149c708270425.jpg

为什么'D'会被转换成 Long 呢?原因是它和一个Long类型的变量在判等。同学可以检查一下自己定义额grade是何种类型,和老师的是否一致:

http://img1.sycdn.imooc.com//climg/5cf0891100015b7c11080152.jpg

如果解答了同学的疑问,望采纳~

祝学习愉快~


  • litter_ 提问者 #1
    我在定义属性的时候,给属性赋值时使用的是单引号,'D',导致系统自动的将我的类型转换为了整数类型,所以会报错。谢谢指正,以后会多查看异常信息的
    2019-05-31 11:32:18
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师