关于javabean生命期的奇怪现象 ${userInfo.userName} 换成 <%=userInfo.getUserName()%> 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <jsp:setProperty name="userInfo" property="*" />lz这个jsp指定是把界面上的值摄入到这个实体bean中,相当需在实体类中进行了set方法,而lz却没有set相应的值到实体bean中所以当然取出的是空的。如果lz采用<jsp:setProperty name="userInfo" property="*" value="111"/>应该就可以了,但是要注意数据的类型。 <jsp:setProperty name="userInfo" property="*" value="111"/>这个将所以的属性进行设值所以要注意实体类中字段的类型。 页面每次刷新后你get的对象又是一个新的,里面的属性的值当然就不再存在咯。 这个是没有关系的,你说的是jsp方式get值,我这里用的是EL,作用是一样的。 是,但是你userName是公共的?一般不是应该是私有的么,用get set来读写 你这是给userInfo设初值,按你的建议改了以后,结果网页直接报exception了不知道你有没有注意到property是用的“*”来表示的也许是我没有误解了你的意思,呵呵。 这是javabean的内透视功能啊,它会自动调用getter方法的 不明白这句话,重新装载a.jsp的时候会看bean是否依然存在,既然它的生命期是session的,应该会沿用开始生成的这个bean实例啊。 呵呵,还是感谢你来参与讨论。学JSP挺有意思的,所以很高兴有这么多朋友一起来探讨研究。 借机会问个问题也<jsp:setProperty name="userInfo" property="*" />这里是否等价于if (request.getParameter("userName") != null) userInfo.setName(request.getParameter("userName"));假设只有这一个属性,刚接触javabean今天试了下,好像如果scope="session",在session中getAttribute可以找到这个userInfo scope="request"的话找不到然后就是上面那个问题,如果在scope="session"时,if (request.getParameter("userName") != null) userInfo.setName(request.getParameter("userName"));正常运行<jsp:setProperty name="userInfo" property="*" />好像不能正常赋值 楼主试试把<jsp:useBean id="userInfo" scope="session" class="prj.UserInfoBean"> <jsp:setProperty name="userInfo" property="*" /> </jsp:useBean>改成<jsp:useBean id="userInfo" scope="session" class="prj.UserInfoBean"/> <jsp:setProperty name="userInfo" property="*" />我这里如果这样改了之后当scope="session"时可以正常赋值了求解释 总算搞明白这个问题了。你写的这两种是有很大区别的,第一次碰到usebean时,生成bean实例并调用里面setproperty,当在其他页面再碰到这个实例时,因为bean的生命期是session,所以依然有效,使用已有的bean,而不调用程序块里的setproperty动作。对于第二种情况,无论bean是否存在,都会调用setproperty动作,从而完成setter方法。我这边的问题也终于解决了,主要有三个方面的问题:1。在servlet里面居然又定义了一个名字为bean的实例,因此判断逻辑实际上是针对这个实例,虽然不会影响我碰到的setproperty无效现象,但仍然是一个错误。2。就是你说的这个问题,setproperty动作要放到usebean外面3。在submit的目标页面上居然没有setproperty动作,我还以为在submit页面上有setproperty时就会调用setter方法呢。还是学习时间短,好多概念都不熟。不管怎样,问题搞定了,结贴,散分。鉴于我自己解决了这个问题,也回答了你的疑问,试试看我能不能也拿10分玩玩,呵呵。 Struts2中的s:datetimepicker标签如何禁止选择,disable=true不好用 SSH配置 谁有jfree chart的包,我到官方网站上去下啦,现在怎么也打不开的,是不是sourceforge.net又不能打开了, 左键点击图片,怎样给它创建一个快捷方式 页面上的显示问题 封装连接池到bean出错! socket编程 test 我的分页bean,多多指教 关于tomcat最新版本的问题 extjs菜鸟,网上查到的一段代码,请大虾们指点一二 关于JDBC
lz这个jsp指定是把界面上的值摄入到这个实体bean中,相当需在实体类中进行了set方法,而lz却没有set相应的值到实体bean中所以当然取出的是空的。
如果lz采用<jsp:setProperty name="userInfo" property="*" value="111"/>应该就可以了,但是要注意数据的类型。
不知道你有没有注意到property是用的“*”来表示的
也许是我没有误解了你的意思,呵呵。
<jsp:setProperty name="userInfo" property="*" />这里是否等价于
if (request.getParameter("userName") != null)
userInfo.setName(request.getParameter("userName"));
假设只有这一个属性,
刚接触javabean今天试了下,好像如果scope="session",在session中getAttribute可以找到这个userInfo scope="request"的话找不到
然后就是上面那个问题,如果在scope="session"时,if (request.getParameter("userName") != null)
userInfo.setName(request.getParameter("userName"));
正常运行
<jsp:setProperty name="userInfo" property="*" />好像不能正常赋值
<jsp:useBean id="userInfo" scope="session"
class="prj.UserInfoBean">
<jsp:setProperty name="userInfo" property="*" />
</jsp:useBean>
改成
<jsp:useBean id="userInfo" scope="session"
class="prj.UserInfoBean"/>
<jsp:setProperty name="userInfo" property="*" />我这里如果这样改了之后当scope="session"时可以正常赋值了求解释
我这边的问题也终于解决了,主要有三个方面的问题:
1。在servlet里面居然又定义了一个名字为bean的实例,因此判断逻辑实际上是针对这个实例,虽然不会影响我碰到的setproperty无效现象,但仍然是一个错误。
2。就是你说的这个问题,setproperty动作要放到usebean外面
3。在submit的目标页面上居然没有setproperty动作,我还以为在submit页面上有setproperty时就会调用setter方法呢。还是学习时间短,好多概念都不熟。
不管怎样,问题搞定了,结贴,散分。鉴于我自己解决了这个问题,也回答了你的疑问,试试看我能不能也拿10分玩玩,呵呵。