EL表达式, 出问题,大家快看看,我都快疯掉了。。。

celinebird 2009-03-06 08:35:16
在Struts框架中,一个Action的excute()方法中执行request.setAttribute("client", client);并转发到另一个jsp页面。
如果在页面中执行:
<%=((Client)request.getAttribute("client")).getCUserName()%>
则能正常得到结果。
但如果换在EL表达式:
${client.cUserName}
则出错:javax.el.PropertyNotFoundException: Property 'cUserName' not found on type com.netPhoneBook.Module.Client

好奇怪呀~~~~~~ 大家快帮我想想是怎么回事?? 感激涕零中。
...全文
139 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinsuo 2009-03-17
  • 打赏
  • 举报
回复
大小写的问题..虽然很小的问题
但有时候就是郁闷的要你找不出来呢 呵呵
lovezx1028 2009-03-17
  • 打赏
  • 举报
回复
com.netPhoneBook.Module.Client这个包下Client.java没有那个cUserName的属性
celinebird 2009-03-07
  • 打赏
  • 举报
回复
感谢四楼,九楼和十楼的提醒,果然是大小写的问题,学习了,记住了~~~~!
JAVA涛哥 2009-03-06
  • 打赏
  • 举报
回复
9楼说的正确 就是大小写的问题 我曾经出现过 !! 但是我的好像是把第一个字母改成大写。。有点记不清楚了。
ZiSheng 2009-03-06
  • 打赏
  • 举报
回复
${client}你看看会不会有输出?
ZiSheng 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhj92lxs 的回复:]
属性第二个字母不要大写
[/Quote]
这个也有影响?LZ没有必要在里边设置setAttribute();client只要是你的action 的属性即可,你的错误很诡异。
是不是你的EL表达式放在<%=${client.cUserName} %>?
笑的自然 2009-03-06
  • 打赏
  • 举报
回复
原因:
1、Client.java文件中没有cUserName属性;
2、Client.java文件中没有getCUserName()方法;
haoziheyezi 2009-03-06
  • 打赏
  • 举报
回复
应该是你那个 cUserName 属性的问题,仔细检查下嘛
zhj92lxs 2009-03-06
  • 打赏
  • 举报
回复
属性第二个字母不要大写
xjbj2008 2009-03-06
  • 打赏
  • 举报
回复
你看下getCUserName()中return的那个属性明与你的client.cUserName()样不,应该是属性名没对上
ldxfsh 2009-03-06
  • 打赏
  • 举报
回复
看下你的Client类里面cUserName这个属性存不存在
zjc_love 2009-03-06
  • 打赏
  • 举报
回复
你先试下 requstScope.client 看能获取到不能
liupengbart 2009-03-06
  • 打赏
  • 举报
回复
属性名的规范上第首写字母和第二个字母不要大写。你的那个cUserName属性能够通过它的get方法访问到,显示get方法是没问题的。把属性改成 cuserName试下吧。应该不会有问题的。一个get方法 getCUserName()。看起来也觉得别扭啊。
今天做项目,用到了el表达式和jstl,在tomcat6.0上跑得好好的,没想到copy到tomcat5.5后,服务器起不来了,是tomcat版本的问题。查阅了不少资料,现在总结如下: 错误信息: java.lang.NoClassDefFoundError: javax/el/ExpressionFactory 分析:少包,上网查阅后发现解决方法 解决方法:将javaee.jar包再copy一份放在tomcat目录的common\lib下 如上完成后即解决了该异常,大以为大功告成,没想到又现了新异常 错误信息:java.lang.NoSuchMethodError: javax.servlet.JSP.PageContext.getELContext()LJAVAx/el/ELContext 分析:这个问题网上找了半天没看到解决方法,只好自己想办法。想起先前看到的一个知识点:tomcat 6 实现了 servlet 2.5 和JSP2.1的规范相应的 tomcat 5 实现的是 2.4和2.0,想到tomcat5不支持JSTL1.2,于是替换JSTL1.1的包试试看后,问题解决 解决方法:移工程lib目录中的JSTL1.2.jar,添加standard-1.1.jar和JSTL1.1.jar 总结: jstl1.1版本由2个必要包构成:standard-1.1.jar和JSTL1.1.jar;而jstl1.1版本只有一个必要包JSTL1.2.jar。(一开始在替换的过程中想当然的用JSTL1.1.jar换JSTL1.2.jar,然后遗漏了standard-1.1.jar,耽搁了不少时间。) 经测试,tomcat6.0支持JSTL1.2版本,也支持JSTL1.1版本;tomcat5.5只支持JSTL1.1(JSTL1.1一下版本未测试) 不建议将2个版本的3个包同时放在工程中,可能会发生版本冲突。(另外,实际操作的时候发现JSTL1.2.jar和JSTL1.1.jar这2个包放一起可以在tomcat5.5和tomcat6.0上跑,鉴于JSTL1.1.jar里面没有c.tld等文件,猜测JSTL1.1.jar里面只是放置了1.1的专用的类和信息)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧