温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

jsp出现cannot be resolved 问题

发布时间:2020-06-16 20:42:25 来源:网络 阅读:3529 作者:yifangyou 栏目:开发技术

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

根据这个提示应该是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然后再强转类型

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI