我使用Spring Roo生成了一些页面,我需要在应用程序的主页上显示数据库中的一些项目。 那么如何将带有数据的模型传递给主页,Roo添加了以下我已注释掉的行
<mvc:view-controller path="/" view-name="index"/>
我使用Roo创建了一个名为Home的新控制器
@RequestMapping("/")
@Controller
public class Home {
@RequestMapping(method = RequestMethod.GET)
public String index() {
return "index";
}
}
现在所有页面都显示索引视图,甚至是/ login。
问候并感谢。
答案 0 :(得分:3)
试试这个:
请勿映射到“/”网址, 它会匹配所有请求(如您所见) 。 编辑:根据评论,上一句的突出部分是错误的。解决方法似乎仍然有效。
@RequestMapping
索引文件名(可能是“/index.html”)。如果这还不够的另一种选择
@RequestMapping("/blammy")
)。答案 1 :(得分:2)
要传递模型数据,请将Model添加到方法签名中。
对于路由问题,请尝试在方法级别映射请求,并确保其他视图存在匹配的映射。即:“/ login”
@Controller
public class Home {
@RequestMapping(value="/", method = RequestMethod.GET)
public String index(Model model) {
String myData = "I want access to this";
model.addAttribute("myData", myData);
return "index";
}
}
答案 2 :(得分:2)
当我发现自己对上面的混合评论感到困惑时,我想我会写下我是如何开始工作的。
在webmvc-config.xml中注释掉<mvc:view-controller path="/" view-name="index"/>
创建了一个新控制器。我用roo为我创造它。但是我意识到它添加了一些与控制器关联的JSPX。由于我不需要它们,我删除了JSPX。控制器样本低于
@RequestMapping("/")
@Controller
public class IndexController {
@RequestMapping
public String index() {
return "redirect:/asas?page=1&size=10";
}
}
您几乎可以调用任何现有的控制器方法。在我的情况下,我希望它显示从数据库中检索的某些项目。
在我的研究中,通过添加@RequestMapping("/")
,不会强制每个请求都在此控制器中着陆。它只在您点击应用程序基URI时发生。
答案 3 :(得分:0)
对我来说,通过将请求映射定义为默认的welcome-file
路径:
@Controller
public class Home {
@RequestMapping("/index.html")
public String index() {
return "index";
}
}