Sha*_*haw 1 java spring spring-mvc
我有一个带注释的控制器和Spring MVC的奇怪问题.我试图使用Annotated控制器为Spring提供的示例MVC应用程序及其文档.我用了2.5版.
当我在类型级别指定@RequestMapping时,我得到"HTTP错误:500没有适用于处理程序的适配器[控制器类名]:您的处理程序是否实现了像Controller这样的支持接口?
如果我将它包含在方法级别中,它可以解决问题.向上下文文件添加或删除默认句柄适配器没有区别:
最后,我使用了控制器级别的@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);
}
}
Run Code Online (Sandbox Code Playgroud)
这有效:
@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);
}
}
Run Code Online (Sandbox Code Playgroud)
这也有效:
@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);
}
}
Run Code Online (Sandbox Code Playgroud)
有什么想法,这里发生了什么?我做了很多搜索而没有解决方案.我也试过2.5.6,问题类似.
你需要@RequestMapping使用该方法,因为将它放在类上是不够的信息 - Spring需要知道调用哪个方法来处理请求.
如果你的班级只有一种方法,那么可以理解你可能认为它会选择它,但事实并非如此.
请注意,带注释的控制器的一个好处是,您可以根据需要@RequestMapping在类中使用尽可能多的注释方法.
| 归档时间: |
|
| 查看次数: |
7298 次 |
| 最近记录: |