问题一:写了一段代码,被提示 Model object must not be null] with root cause
花了很长时间调试都没能解决,最坑的是加入了System.out.println(“”)来调试,调试内容都显示不出来,然后就用log4j来调试,还是没有结果,万般无奈,直接改跳转,结果呵呵了,还是没反应。后来找到原因,是因为文件已经被我改名字了,访问的是TomCat下的WebApp中的编译好的程序。
这里有两点需要提醒一下,和我一样作为新手的大家
- 一定要把Servers的工具栏放到工作台上,不要直接点最上面的Run Servers,因为第一可能看不出来有些项目已经被移除,其次可能会把所有的MyEclipse中所有Web项目都编译了一遍,很费时
- 不需要的项目,可以右击选择——close project,需要的时候再打开,会节省些内存
- jsp如果调试一直没有结果,而你觉得逻辑也是正确的,就可以用project——clean清理一下,很有用,表示被缓存坑了很多回。Ctrl+F5也可重新访问
@RequestMapping(value="/{name}",method=RequestMethod.GET,produces = "text/html;charset=UTF-8")
public String show(@PathVariable String name,Model model){
//model.addAttribute(users.get(name));
model.addAttribute("user",users.get(name));
return "user/show" ;
}
之所以会出现Model object 提示的错误,是因为model.addAttribute(..),中的对象为空
通常要在这个类中声明
users是一个Map
IDao dao = new DaoImp();
private Map<String,User> users = dao.list();
这样才能通过key找到value
问题二:org.springframework.beans.factory.BeanCreationException:
Error creating bean with name ‘org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping’: Initialization of bean failed; nested exception is java.lang.IllegalStateException: Cannot map handler ‘…Controller’ to URL path [/..]: There is already handler of type [class com.sdemo.controller.Login] mapped.
我遇到这种情况的原因是,存在两个 @RequestMapping(value = “/getprivrole”),两个映射的值系统,springMVC就不知道要加载哪一个类。给其中一个换另一个名字就可以解决问题。