У меня странная проблема с аннотированными контроллерами и Spring MVC. Я пытался использовать аннотированные контроллеры для примера приложения MVC, которое Spring поставляет со своей документацией. Я использовал версию 2.5.
Когда я указываю @RequestMapping на уровне типа, я получаю «ОШИБКА HTTP: 500 Нет адаптера для обработчика [имя класса контроллера]: реализует ли ваш обработчик поддерживаемый интерфейс, такой как контроллер?
Если я включу его на уровень метода, он отлично работает без проблем. Добавление или удаление адаптеров дескрипторов по умолчанию для файлов контекста не имело значения:
Наконец, я прибегнул к @RequestMapping на уровне контроллера, а также на уровне метода, и это сработало. Кто-нибудь знает, в чем может быть дело?
Вот пример кода:
Это не сработало:
@Controller
@RequestMapping("/*")
public class InventoryController {
protected final Log logger = LogFactory.getLog(getClass());
@Autowired
private ProductManager productManager;
public ModelAndView inventoryHandler() {
String now = (new java.util.Date()).toString();
logger.info("returning hello view with " + now);
Map<String, Object> myModel = new HashMap<String, Object>();
myModel.put("now", now);
myModel.put("products", this.productManager.getProducts());
return new ModelAndView("hello", "model", myModel);
}
}
Это сработало:
@Controller
public class InventoryController {
protected final Log logger = LogFactory.getLog(getClass());
@Autowired
private ProductManager productManager;
@RequestMapping("/hello.htm")
public ModelAndView inventoryHandler() {
String now = (new java.util.Date()).toString();
logger.info("returning hello view with " + now);
Map<String, Object> myModel = new HashMap<String, Object>();
myModel.put("now", now);
myModel.put("products", this.productManager.getProducts());
return new ModelAndView("hello", "model", myModel);
}
}
Это также сработало:
@Controller
@RequestMapping("/*")
public class InventoryController {
protected final Log logger = LogFactory.getLog(getClass());
@Autowired
private ProductManager productManager;
@RequestMapping( method = RequestMethod.GET, value = "/hello.htm" )
public ModelAndView inventoryHandler() {
String now = (new java.util.Date()).toString();
logger.info("returning hello view with " + now);
Map<String, Object> myModel = new HashMap<String, Object>();
myModel.put("now", now);
myModel.put("products", this.productManager.getProducts());
return new ModelAndView("hello", "model", myModel);
}
}
Есть идеи, что здесь происходит? Я много искал и не нашел решения. Я также пробовал с 2.5.6, и проблема была похожей.