没有配过这个属性,一般只配type和name就好了!

解决方案 »

  1.   

    功能跟name一样--是设置和Action关联的Form Bean类。保存在request和session中,也就是说可以直接通过request.getAttribute()和session.getAttribute()得到FormBean实例值。是个可选项。
      

  2.   

    我们知道,actionForm是被存储在一定的scope中(request或session,通过action的scope属性来配置),当我们在配置时,指定name而不指定attribute,那么指定的name值就作为actionForm存储在scope中的key值,我们可以在action中通过httpServletRequest.getAttribute("指定的name属性值")来获得这个actionForm; 当我们既配置了name又配置了attribute,那么actionForm存储在scope中的key值就采用attribute属性指定的值了,这时要通过httpServletRequest.getAttribute("指定的attribute属性值")来获得actionForm,此时通过httpServletRequest.getAttribute("指定的name属性值")是不能获得actionForm的。所以,是否配置attribute属性就决定了actionForm存储在scope中的key值是采用name,还是采用attribute
      

  3.   

    在实际开发中,我们一般不必去理会attribute属性的设置。以上叙述我在初学struts时做过实验,你也可以试验一下,很简单。
      

  4.   

    to: SYC99
    可是一般情況是在execute中有actionForm的參數啊﹐直接用就可以拉﹖謝謝
      

  5.   

    是这样的,当我们不再需要存储在request或session中的actionForm时,我们就应该把这个actionForm从request或session中删除掉,而不应该再让actionForm随request或session传递到页面中去,这时就要用到这个key值了。示例代码(action.execute中):
    // remove unused form
    if("request".equals(actionMapping.getScope()))
    {
        httpServletRequest.removeAttribute(actionMapping.getName());
    }
    else if("session".equals(actionMapping.getScope()))
    {
        httpServletRequest.getSession().removeAttribute(actionMapping.getName());
    }
      

  6.   

    当然,当你配置了attribute属性时,上面示例代码中的actionMapping.getName()就要用actionMapping.getAttribute()替代了
      

  7.   

    可以先着手写写最简单的小case,比如无需验证的登陆页面什么的(好老土的提议)。1、弄清楚配置文件的书写,基本配置元素的基本属性的含义
    2、struts框架中书写最频繁的代码莫过于action的execute的方法了,其实这个方法中基本上包含以下内容:
       (a)获得actionForm中属性信息
       (b)actionForm属性信息的逻辑验证
       (c)利用这些属性信息进行的业务逻辑运算
       (d)根据业务逻辑运算结果和当前状态选择转发路径  当初我也不知代码从何下手,写着写着就通了,再看看别人的代码,仅此而已,努力努力:)