2013-03-24 52 views
2

我不明白为什么以下给出了一个模糊的映射。Spring MVC:发现模糊映射

a。该控制器类

@Controller 
@RequestMapping("/employees") 
public class EmployeeController { 

@Autowired 
private EmployeeService employeeService; 

@RequestMapping(value = "/new", method = RequestMethod.GET) 
public String get(Model model) { 
    return "xx"; 
} 

} 

控制台输出:

java.lang.IllegalStateException: Ambiguous mapping found. Cannot map 'org.tutorial.spring.controller.EmployeeController#0' bean method 
public java.lang.String org.tutorial.spring.controller.EmployeeController.get(org.springframework.ui.Model) 
to {[/employees/new],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}: There is already 'employeeController' bean method 
public java.lang.String org.tutorial.spring.controller.EmployeeController.get(org.springframework.ui.Model) mapped.  

它说的方法已经被映射。 怎么样?

b。 web.xml

<servlet-name>spring</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>spring</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
</web-app> 

c。 spring.xml

<context:annotation-config /> 
<context:component-scan base-package="org.tutorial.spring" /> 
<mvc:annotation-driven /> 
<bean class="org.tutorial.spring.controller.EmployeeController" /> 

回答

7

尝试从XML除去bean元素

<bean class="org.tutorial.spring.controller.EmployeeController" /> 

。我怀疑这是造成你的问题,因为

<context:component-scan base-package="org.tutorial.spring" /> 

会扫描你的包,并确定EmployeeController作为一个bean,由于它的注解。然后,之后,您手动添加相同的bean。

+0

盲目!!!我需要一副新的眼镜!谢谢 – yapkm01 2013-03-24 03:03:52

+0

不客气:D – JustDanyul 2013-03-24 03:06:31