本帖最后由 etracer 于 2010-06-03 07:23:30 编辑

解决方案 »

  1.   

    老大你刚学java就用框架啊!呵呵
    上面代码数据是通过getBooks()方法获取的。数据存在ActionContext上下文中。并没有存入Session和Request。
    Struts2的Action中,如果普通属性提供了对应的set和get方法的话,默认将内容存在ActionCOntext中,在页面都可以获取到。
    你可以在页面增加<s:debug></s:debug>,然后点击可以查看ActionContext和其他web对象中的所有内容。
      

  2.   

    先把J2Se搞的差不多了,其他的……都迎刃而解
      

  3.   

    我也很纳闷,jsp页面没有设置action的值,jsp怎么执行呢~~~~继续关注~
      

  4.   

    在ACTION中把值放到session或request中不就行了
      

  5.   

    Struts2取action的属性根本就不需要往作用域里面存对象.! 照你的代码看来应该是先访问那个action,再由那个action转发到jsp的吧.?
    如果你不明白我帮你解释一下是怎么回事:
    首先action被struts2的过滤器拦截以后,产生action的环境(OGNL Context), 接着产生action的代理,还会把action压入Ognl Context的根对象ValueStack的栈顶!  那么我们在jsp页面上可以通过OGNL访问这个valuestack以及OGNL Context中的对象以及属性.! 而struts2修改了OGNL的属性访问机制, 当你在页面上用<s:property value="attr">时,不再是访问根对象, 而是从ValueStack栈顶开始逐一扫描对象的属性,以找到的第一个为准.!
    所以你页面上<s:iterator value="books" status="index">这个books就正是action的books属性!
    我还可以告诉LZ一点的就是, 其实这个ValueStack已经在Struts2产生环境的时候被存到request作用域去了.!
      

  6.   

    用struts2你还这么做的话, 我只能说你不会用这个框架.!
      

  7.   

    感谢izard999和  Headsen,小弟刚刚看完struts1,然后找了个代码练习了一下,那么我可以这么理解么?
    struts2不需要存入Session和Request就能在页面拿到值,只需要将数据放入action中提供get set方法,然后再、页面就能通过<s:iterator 拿值了,这么理解可以么
      

  8.   

    你要这么理解也可以.! 你拿的是ValueStack栈中的Action对象的属性
    你自己怎么理解得了就怎么理解.! 呵呵  东西是死人  人是活的喔