就是用SSH简单的弄个登录功能,求大侠拯救...报错如下:org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'user' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:387)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:971)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:880)
at com.registration.action.UserActionTest.testList(UserActionTest.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
struts.xml文件内容:<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <package name="registration" extends="struts-default"> <action name="user" class="com.registration.action.UserAction"> <result name="success">/registerSuccess.jsp</result>
<result name="fail">/registerFail.jsp</result>
<result name="list">/userList.jsp</result>
</action> </package>
</struts>
action如下:package com.registration.action;import java.util.List;import javax.annotation.Resource;import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Scope;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.registration.model.User;
import com.registration.service.UserManager;
import com.registration.service.impl.UserManagerImpl;
import com.registration.vo.UserRegisterInfo;@Component("userAction")
@Scope("prototype")
public class UserAction extends ActionSupport implements ModelDriven{

private UserRegisterInfo info = new UserRegisterInfo();
private UserManager um;

private List<User> users;

public List<User> getUsers() {
return users;
} public void setUsers(List<User> users) {
this.users = users;
} public UserRegisterInfo getInfo() {
return info;
} public void setInfo(UserRegisterInfo info) {
this.info = info;
}
public UserManager getUm() {
return um;
} @Resource(name="userManager")
public void setUm(UserManager um) {
this.um = um;
} @Override
public String execute() throws Exception {
User u = new User();
u.setUsername(info.getUsername());
u.setPassword(info.getPassword());
if(um.exists(u)) {
return "fail";
}
um.add(u);
return "success";
} @Override
public Object getModel() {
return info;
}

public String list() {
this.users = this.um.getUsers();
return "list";
}
}

解决方案 »

  1.   

    No bean named 'user' is defined应该是Spring中没有配置相关的bean或者
    at com.registration.action.UserActionTest.testList(UserActionTest.java:30)
    这里使用的bean和Spring配置的名称不一样,仔细check一下...
      

  2.   

    <action name="user" class="com.registration.action.UserAction">这里的class应该是spring配置文件中的bean名称,
    比如:在struts2.xml中是:<action name="user" class="userAction">在spring的applicationContext.xml 中应该是<bean id="userAction" class="com.registration.action.UserAction"....
    </bean>
      

  3.   

    <action name="user" class="com.registration.action.UserAction">@Component("userAction")
    名称要一致吧,把user改成userAction试试
      

  4.   


    错误:
    No bean named 'user' is defined
    你的Bean user报不存在错误,就是没有配置
    改:
    在applicationContext.xml中配置user如下:
    <mapping resource="user.hbm.xml的路径" />
      

  5.   

    没有这个user这个类 没有纯在或者是没有找到这个user这个类   没有配置好 或者 就没有这个类
    好好看看
      

  6.   

    3楼说的没有错,就是这个问题,要不你改注解为@Component("user"),要不你改xml文件的action name=“userAction”
      

  7.   

    楼主贴出来的代码并没有由spring创建action实例
      

  8.   

    我认为是页面和action之间交互的错误,楼主可以贴出jsp页面的代码看看
      

  9.   


    这里的代码只是一部分,我刚学ssh,我用的是junit来测试execute方法,还没有涉及到JSP
    页面。我解决方案就把action中的注解改为@component(“user”)
      

  10.   

    <action name="user" class="com.registration.action.UserAction">            <result name="success">/registerSuccess.jsp</result>
                <result name="fail">/registerFail.jsp</result>
                <result name="list">/userList.jsp</result>
            </action>struts配置文件中的class属性的值对应的是spring配置文件中的bean名称。
      

  11.   

    @component(“user”)改为 @Controll("user")
      

  12.   

    错了是:com.registration.action.UserAction改成user
    同时@component该为@Control
      

  13.   

    org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'user' is defined
        at org.springframework.beans.www.cctv40.cnfactory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:387)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:971)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:246)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:880)
        at com.registration.action.www.cctv40.comUserActionTest.testList(UserActionTest.java:30)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
        at org.junit.internal.runners.www.163xyx.comstatements.RunBefores.evaluate(RunBefores.java:28)
        at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
        at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
        at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
        at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)好长啊