id是唯一标识bean.不能用特殊字符:×#@ ,不能用数字开头。在bean引用的时候只能有id指向你需要的beanname 可以用特殊字符,并且一个bean可以用多个名称:name=“bean1,bean2,bean3” ,用逗号隔开。如果没有id,则name的第一个名称默认是id!
另外你这里定义name指向的是action,貌似struts+spring托管方式的话,action在spring配置文件里要定义成name;

解决方案 »

  1.   

    因为第二个是spring代理跳转的,是根据
     <action
          attribute="loginForm"
          input="login.jsp"
          name="loginForm"
          path="/user"
          scope="request"
           type="org.springframework.web.struts.DelegatingActionProxy"
          validate="false" >
     <forward name="success" path="/index.jsp" />
      <forward name="fail" path="/index1.jsp" />
     </action>

      <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
        <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml,/WEB-INF/action-servlet.xml" />
      </plug-in>
    从而找到
    <bean name="/user" class="com.accp.web.action.userAction">
    <property name="userBiz" ref="userBiz"/>
    </bean> 
    进行注入
    其中action的path要和你的name一致,
      

  2.   

    楼上说的很清楚了另外,name一般可以理解成别名,既然是别名那有多个name就比较好理解了,呵呵
      

  3.   


    就是  struts spring 托管方式的这就是如果指向action 必须要用 name 吗 如果定义其它的bean 都用id的缘故吗