Spring MVC主页控制器

问题描述:

我已经使用Spring Roo生成了一些页面,并且我需要在应用程序的主页上显示来自数据库的一些项目。 所以,我怎么能传递模型与数据主页,袋鼠增加了以下我注释掉Spring MVC主页控制器

<mvc:view-controller path="/" view-name="index"/> 

我创建使用袋鼠打电话回家这样

@RequestMapping("/") 
    @Controller 
    public class Home { 
      @RequestMapping(method = RequestMethod.GET) 
      public String index() { 
       return "index"; 
      } 
    } 

一个新的控制器线现在所有的页面显示索引视图,甚至/登录。

谢谢。

试试这个:

不要映射到 “/” 的url,它会匹配所有请求(如你所看到的)。 编辑:根据评论,前面句子的突出部分是错误的。解决方法似乎仍然有效。

  1. 在您的web.xml文件中,配置一个欢迎文件(可能是index.html)。
  2. 使用index控制器的索引文件名称@RequestMapping(也许是“/index.html”)。

另一种选择,如果这还不够

  1. 在web.xml文件,配置一个JSP欢迎文件(可能的index.jsp)。
  2. 在您的JSP欢迎文件中,将请求转发到已知的URL(也许/ blammy)。
  3. 将您的索引控制器映射到已知的URL(例如@RequestMapping("/blammy"))。
+0

我想知道为什么这么简单的事情需要所有这些工作。因为我真的不喜欢重定向或为应用程序添加前缀。再次感谢。 – Zeronex 2012-02-29 15:15:16

+0

另外我想知道为什么 只匹配主页,在控制器中它会匹配所有内容...? – Zeronex 2012-02-29 15:18:29

+1

虽然这会起作用,但并非100%准确。 “/”不会匹配所有请求。在你的例子中,它只会匹配所有请求到这个控制器,我想你想要的。要从持久层获取数据到模型,请按照以下建议的BrandonV进行操作,并将'Model'放入您的方法签名中,并为其添加任何属性。 – 2012-02-29 15:43:02

要传递模型数据,请将Model添加到方法签名中。

对于您的路由问题,请尝试在方法级别映射请求,并确保其他视图具有匹配的映射。即: “/登录”

@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"; 
    } 
} 
+0

不要映射到“/” URL,它会匹配所有请求 – Zeronex 2012-02-29 15:14:01

+1

@Zeronex这是不正确。我相信你正在考虑'''''行为的行为。在这种情况下,Spring的'@ RequestMapping'将匹配'/'和'/'。 – 2012-02-29 15:31:18

由于我发现自己很困惑与上述混合评论,我想我会写我如何得到它的工作。

  1. 在webmvc-config.xml中

  2. 创建一个新的控制器注释掉<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时。

对我的作品被定义请求映射为默认welcome-file路径:

@Controller 
public class Home { 
     @RequestMapping("/index.html") 
     public String index() { 
      return "index"; 
     } 
}