使用extends子句

时间:2015-06-20 21:10:09

标签: java spring-mvc inheritance annotations

我有一个扩展 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()。

怎么解决呢?

由于

1 个答案:

答案 0 :(得分:2)

@RequestMapping("getFileCustomer")此请求映射存在于CustomerCardControllerCustomerController类中,因为它们扩展了具有此映射的相同类。因此,您有相同的请求映射的重复条目。