我有一个扩展 CrudMethods 类的 CustomerController 和 CustomerCardController 类。
我选择这样,因为这两个控制器使用相同的方法(getFileCustomer()就是其中之一)。我认为最好使用继承来保存代码的行。
CustomerController
@Controller
public class CustomerController extends CrudMethods {
...
CustomerCardController
@Controller
public class CustomerCardController extends CrudMethods{
...
CrudMethos
@Controller
public abstract class CrudMethods {
@RequestMapping("getFileCustomer")
@ResponseBody
public String getFileCustomer() {
...
当我跑步时,GlassFish给了我这个错误:
HTTP状态500 - 内部服务器错误类型异常报告
消息:内部服务器错误
description:服务器遇到阻止的内部错误 它来自履行这一要求。
例外:
javax.servlet.ServletException:servlet调度程序的Servlet.init() 抛出异常
根本原因:发现了模糊映射
问题是@RequestMapping和@ResponseBody注释。
事实上,如果我删除它们,应用程序就会启动。
但我需要这些注释。因为,当应用程序运行时,Ajax调用会使用@RequestMapping和@ResponseBody。
并且两个控制器都使用了getFileCustomer()。
怎么解决呢?
由于
答案 0 :(得分:2)
@RequestMapping("getFileCustomer")
此请求映射存在于CustomerCardController
和CustomerController
类中,因为它们扩展了具有此映射的相同类。因此,您有相同的请求映射的重复条目。