码迷,mamicode.com
首页 > Web开发 > 详细

jsp出现cannot be resolved 问题

时间:2018-08-02 20:38:50      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:错误   new   ref   跳转   分享图片   项目   文件   今天   类型   

今天接手一个09年的老项目,这个项目是Struts2的,早就忘光了,配置文件也一大堆,废了老大劲解决出现的错误,跑起来了,登录成功后跳转到首页出现500错误,报错:“org.apache cannot be resolved or is not a field”
如图所示:
技术分享图片

根据这个提示应该是EL表达式${ctxpath}没有定义
但是报错地方上面也有用${ctxpath}的地方,例如:

<link href="${ctxpath}/jsp/newframe/themes/default/style.css" rel="stylesheet" type="text/css" media="screen"/>
<link href="${ctxpath}/jsp/newframe/themes/css/core.css" rel="stylesheet" type="text/css" media="screen"/>

这就特别奇怪了。

于是我初步怀疑是不是因为EL在javascript里会出错,找了半天还是没有找到相关的解决办法,直到我逐条把js代码都删掉,最后只剩下一个EL表达式变量了,但是还是报错。
没办法了,只能怀疑tomcat版本太高的缘故,更换为tomcat6后,错误依然。
于是我还得逐步调试,终于发现问题所在^_^。
原因是在报错代码之前有一段java程序,把java程序去掉就不会出现500错误,难道这段java代码会把${ctxpath}的值删掉?
又逐条检查发现一个读取session的语句有问题

Organization org = (Organization)request.getSession().getAttribute(“abc”);
    if(org!=null){
        dept = org.getName();
    }

这句话看起来挺正常的,但是request.getSession().getAttribute(“abc”)的值为null,按照我理解若是null的话转换为任何对象不会报错,但是实际上在jsp里出现错误了,但是又不输出错误。这样导致jsp无法被编译,从而导致上面的EL表达式${ctxpath}找不到

最后解决办法有两种:
1.在登录的代码里添加上这个session,保证不能为空
2.先判断是否为null然后再强转类型

jsp出现cannot be resolved 问题

标签:错误   new   ref   跳转   分享图片   项目   文件   今天   类型   

原文地址:http://blog.51cto.com/yifangyou/2153785

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!