使用 extends 子句时发现映射不明确
Ambiguous mapping found when I use extends clause
我有一个 CustomerController 和 CustomerCardController class 扩展 CrudMethods class.
我选择这样,因为这两个控制器使用相同的方法(getFileCustomer() 是其中之一)。而且我认为最好使用继承来保存代码行。
客户控制器
@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 Status 500 - Internal Server Error type Exception report
message: Internal Server Error
description: The server encountered an internal error that prevented
it from fulfilling this request.
exception:
javax.servlet.ServletException: Servlet.init() for servlet dispatcher
threw exception
root cause: Ambiguous mapping found
问题是@RequestMapping 和@ResponseBody 注释。
事实上,如果我删除它们,应用程序就会启动。
但我需要这些注释。因为,@RequestMapping 和@ResponseBody 在应用程序运行 时被Ajax 调用使用。
两个控制器中都使用了 getFileCustomer()。
如何解决?
谢谢
@RequestMapping("getFileCustomer")
此请求映射存在于 CustomerCardController
和 CustomerController
class 中,因为它们扩展了具有此映射的相同 class。所以你有相同请求映射的重复条目。
我有一个 CustomerController 和 CustomerCardController class 扩展 CrudMethods class.
我选择这样,因为这两个控制器使用相同的方法(getFileCustomer() 是其中之一)。而且我认为最好使用继承来保存代码行。
客户控制器
@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 Status 500 - Internal Server Error type Exception report
message: Internal Server Error
description: The server encountered an internal error that prevented it from fulfilling this request.
exception:
javax.servlet.ServletException: Servlet.init() for servlet dispatcher threw exception
root cause: Ambiguous mapping found
问题是@RequestMapping 和@ResponseBody 注释。
事实上,如果我删除它们,应用程序就会启动。
但我需要这些注释。因为,@RequestMapping 和@ResponseBody 在应用程序运行 时被Ajax 调用使用。
两个控制器中都使用了 getFileCustomer()。
如何解决?
谢谢
@RequestMapping("getFileCustomer")
此请求映射存在于 CustomerCardController
和 CustomerController
class 中,因为它们扩展了具有此映射的相同 class。所以你有相同请求映射的重复条目。