Spring MVC主页控制器

时间:2012-02-29 14:43:48

标签: spring spring-roo

我使用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。

问候并感谢。

4 个答案:

答案 0 :(得分:3)

试试这个:

请勿映射到“/”网址, 它会匹配所有请求(如您所见) 。 编辑:根据评论,上一句的突出部分是错误的。解决方法似乎仍然有效。

  1. 在您的web.xml文件中,配置一个欢迎文件(可能是index.html)。
  2. 使用索引控制器的@RequestMapping索引文件名(可能是“/index.html”)。
  3. 如果这还不够的另一种选择

    1. 在您的web.xml文件中,配置JSP欢迎文件(可能是index.jsp)。
    2. 在您的JSP欢迎文件中,将请求转发到已知的URL(可能/ blammy)。
    3. 将索引控制器映射到已知URL(例如@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)

当我发现自己对上面的混合评论感到困惑时,我想我会写下我是如何开始工作的。

  1. 在webmvc-config.xml中注释掉<mvc:view-controller path="/" view-name="index"/>

  2. 创建了一个新控制器。我用roo为我创造它。但是我意识到它添加了一些与控制器关联的JSPX。由于我不需要它们,我删除了JSPX。控制器样本低于

    @RequestMapping("/")
    @Controller
    public class IndexController {
    
        @RequestMapping
        public String index() {
            return "redirect:/asas?page=1&size=10";
        }
    }
    
  3. 您几乎可以调用任何现有的控制器方法。在我的情况下,我希望它显示从数据库中检索的某些项目。

    在我的研究中,通过添加@RequestMapping("/")不会强制每个请求都在此控制器中着陆。它只在您点击应用程序基URI时发生。

答案 3 :(得分:0)

对我来说,通过将请求映射定义为默认的welcome-file路径:

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