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

Request会自动封装对象吗
大家好,有个问题想问问大家。
我在《研磨Struts2》里面看到一个小细节颇有意思。
里面说:
页面:
<jsp:useBean id="helloModel" class="..." scope="request"></jsp:useBean>
<form action="....." method="post">
<input type="text" name="account">
<input type="password" name="password">
....
</form>
然后作者在servlet里面如此编程:
protected void doPost(....){
  //1、收集参数,不用做了,通过JavaBean传入
  //2、组织参数,不用做了,已经组织好了,把数据封装成了JavaBean
  //这里只需要获取封装好了的JavaBean就可以了
  HelloWorldModel hwm = (HelloWorldModel)request.getAttribute("helloModel");
}
我很好奇,页面的text和password元素是会主动封装到JavaBean的么?不过我自己做了一个检验,发现得到的结果都是null。。
所以我很想知道,是不是可以实现但是我设置少了什么?还是说这是不可以的?
Request对象里面的Attribute会因为Parameter而改变吗?
---------------------------
感觉有点乱,如果我说的不能理解,请见谅!分数不多了呀呀呀呀……
struts servlet jsp request

------解决方案--------------------
jsp支持将页面的参数绑定到javabean中,使用标签<jsp:setProperty/>就可以达到效果。
在你的例子里面,如果helloModel包含属性account和password,那么添加<jsp:setProperty name = "helloModel" property = "*" /> 就可以得到你想要的效果。
------解决方案--------------------
第一,你把request.getAttribute("helloModel");改成request.getParamter("helloModel")
第二,你得告诉action,account和password是helloModel这个javebean的两个属性。