大家好,有个问题想问问大家。
我在《研磨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而改变吗?
---------------------------------------------------------------
感觉有点乱,如果我说的不能理解,请见谅!分数不多了呀呀呀呀……strutsservletjsprequest

解决方案 »

  1.   

    jsp支持将页面的参数绑定到javabean中,使用标签<jsp:setProperty/>就可以达到效果。
    在你的例子里面,如果helloModel包含属性account和password,那么添加<jsp:setProperty name = "helloModel" property = "*" /> 就可以得到你想要的效果。
      

  2.   

    第一,你把request.getAttribute("helloModel");改成request.getParamter("helloModel")
    第二,你得告诉action,account和password是helloModel这个javebean的两个属性。
      

  3.   

    今天又想起这个问题,特意看了一下你说的那篇研磨strus2,里面是有一点要注意,他实际上是在login.jsp页面获取的那些参数,然后通过forward的方式转到servlet的,所以这个helloModel还是有效的,如果使用redirect方式,这个helloModel就取不到了。
      

  4.   

    噢噢,好的!谢谢提醒。我刚刚也才在对比forward和redirect的区别。