【问题标题】:How to add pages without put addViewController for every page?如何在不为每个页面添加 addViewController 的情况下添加页面?
【发布时间】:2018-12-29 03:09:01
【问题描述】:

我正在研究spring框架,并在网上学习了一些教程,然后我发现了这个:

    package control;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

    @Configuration
    public class MVCController implements WebMvcConfigurer {
        public void addViewControllers(ViewControllerRegistry registry) {
              registry.addViewController("/index").setViewName("index");
              registry.addViewController("/").setViewName("index");
              registry.addViewController("/hello").setViewName("hello");
              registry.addViewController("/login").setViewName("login");
        }

    }

所以我的疑问是:

  • 如何在不添加新行的情况下添加更多页面以将视图控制器添加到每个页面?

  • 有什么方法可以将一些通用控制器放到我不打算进行一些处理的页面上? (例如一些静态页面)

我使用的是 spring 5 和 Java JRE 1.8。

谢谢!

【问题讨论】:

    标签: java spring spring-mvc spring-boot


    【解决方案1】:

    如果你在你的config class 中设置了一个ViewResolver bean,例如,一个常见的周围是这样的:

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    
        viewResolver.setPrefix("/WEB-INF/view/");
        viewResolver.setSuffix(".jsp");
    
        return viewResolver;
    }
    

    在此之后,您可以使用 @Controller 注释创建控制器类,您将在其中分配 @RequestMapping 注释,以侦听分配的目标。

    例如,

    @Controller
    public class yourCustomController {
    
    //this will be your home page
    @RequestMapping(value ="/")
    public String showHomePage(){
    //the return statement will look in the path defined in the view resolver and add the .jsp suffix ( so it will display file "/web-inf/view/my-home-page.jsp" )
      return "my-home-page";
    }
    }
    

    您还可以将控制器分配给某些路径,例如, @Controller(value="/blog") 所有控制器@RequestMappings 将映射到root/blog/**。

    【讨论】:

    • 但我真的需要创建一个新类并在每个页面上放置一个新的“addViewController”吗?那么,如果我创建了 20 个页面,其中只有 5 个需要控制器,而其他每个页面都是静态文本,那么我真的需要创建 20 个控制器类吗?
    • 第一个代码将被放入您的配置文件中。这可以是 @Java annotated 或 XML 配置。然后,您可以在控制器中拥有任意数量的页面。
    猜你喜欢
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 2021-05-08
    相关资源
    最近更新 更多