java - 如何向 Spring MVC View 公开 Spring bean?

标签 java spring-mvc spring-java-config

我有一个 @Controller,它有一个 @RequestMapping 将端点映射到我的 jsp 页面。在该 Controller 中,我使用 @ModelAttribute 注释来使配置文件中的 @Bean 可在 jsp 中访问。

@Controller
public class WebPageController {

    @Autowired
    private MyBean myBean;

    @ModelAttribute
    public MyBean myBean() {
        return myBean;
    }

    @RequestMapping("/mypage")
    public String myPage() {
        return "myPage";
    }
}

在我的配置文件中,我有 @BeanInternalResourceViewResolver

@Configuration
@EnableWebMvc
@ComponentScan({"my.package"})
public class WebConfig extends WebMvcConfigurerAdapter {
    @Bean
    public MyBean myBean {
        return new MyBean();
    }

    @Bean
    public InternalResourceViewResolver getInternalResourceViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/pages/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

这工作正常,我可以在我的 jsp 页面上访问 myBean

<script type="text/javascript">
    version = "${myBean.version}"
</script>

但是,我想将 Controller 移至 Java 配置中。我可以在我的 WebConfig 中使用 ViewController 完成相同的 @RequestMapping

@Override
public void addViewControllers(final ViewControllerRegistry viewControllerRegistry) {
    viewControllerRegistry.addViewController("/myPage").setViewName("myPage");
}

现在,我需要将 myBean 添加为 @ModelAttribute,以便可以在 myPage.jsp 上进行访问。我如何在 Java 配置中执行此操作?

编辑:这不是 this question 的重复项。这展示了如何使用 xml 配置来做到这一点。我想知道如何在我的 Java @Configuration 文件中执行此操作。

最佳答案

以下是我在 Java 配置中配置 InternalResourceViewResolver 的方法。您可以将 jsp 上需要访问的 bean 名称传递给 InternalResourceViewResolversetExposedContextBeanNames 方法。

@Bean
public InternalResourceViewResolver getInternalResourceViewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/pages/");
    resolver.setSuffix(".jsp");
    resolver.setExposedContextBeanNames("myBean");
    return resolver;
}

关于java - 如何向 Spring MVC View 公开 Spring bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33395147/

相关文章:

java - onactivityresult() 永远不会被调用

java - 如何从 Firebase 获取当前用户个人资料图片和名称?

spring-mvc - spring mvc 使用 session 登录/注销

java - Spring ToStringCreator 的使用

java - jsp的form标签中modelattribute的使用

java - SpringBatch - javaconfig 与 xml

java - 为什么网格不遵守约束?

java - 如何在Java中高效存储滚动播放项属性?

Spring JSF 集成纯 Java 配置(无 web.xml)

spring-mvc - 在 JBoss 上使用 Spring MVC Java Config 时出现 404 错误