日期:2014-05-18  浏览次数:20694 次

问题求助,关于strtus2!!!
先向大伙求证一个问题:struts2在Action里定义的成员变量照理说是可以在页面直接通过OGNL表达式访问到的,只要这个变量写了get和set方法,对吧!
但是我在Action 里面定义了一个成员变量,也写个get和set方法,而且在执行方法里也给它赋了值的,可是在Jsp页面上用OGNL表达式访问却什么也取不到,大家说说是什么原因啊?我真的很纠结啊!害的我每次想传东西都要放到session里面,听说这样不好吧!
谢谢大伙了,麻烦帮忙解决一下吧!

------解决方案--------------------
检查一下变量名是否对应上了,如果不是这个原因,建议把代码沾出来看看
------解决方案--------------------
不会是属性改过名字的吧?
------解决方案--------------------
支持ognl的jar包导入了么,<s:debug/>应该能看到是否有值吧!
------解决方案--------------------
在jsp中加上<s:debug/>可以看到值栈里面的值
------解决方案--------------------
是不是变量名字有差啊,没写清楚大小写?
------解决方案--------------------
会不会是没有引入标签库
<%@ taglib prefix="s" uri="/struts-tags" %>
------解决方案--------------------
还有获取是根据getX通过反射来获取的 是不是没有注意大小写什么的
------解决方案--------------------
贴代码 才是正道 !!!
------解决方案--------------------
应该是这种错误
有个类User中有属性userName和password
在Action中定义了一个User user=new User();并提供getter和setter
但是jsp提交时写的是<input name=username><input name=password>

解决办法是将<input>中的name改为user.username或user.password


如果我猜错了,贴代码吧
------解决方案--------------------
这问题很基础!无非几个原因
1、名字对应错误;2、ognl表达式写法有误;(像楼上说的没导入struts标签,我觉得不太可能因为太低级)
建议:首先查名字,其次查ognl表达式,看看<s:debug>中显示的堆栈中相应对象有没有值!!