jsp出现cannot be resolved 问题

今天接手一个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然后再强转类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值