Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何向SpringMVC视图公开Springbean?_Java_Spring Mvc_Spring Java Config - Fatal编程技术网

Java 如何向SpringMVC视图公开Springbean?

Java 如何向SpringMVC视图公开Springbean?,java,spring-mvc,spring-java-config,Java,Spring Mvc,Spring Java Config,我有一个@Controller,它有一个@RequestMapping将端点映射到我的jsp页面。在该控制器中,我使用@modeldattribute注释使配置文件中的@Bean可以在jsp中访问 @Controller public class WebPageController { @Autowired private MyBean myBean; @ModelAttribute public MyBean myBean() { retur

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

@Controller
public class WebPageController {

    @Autowired
    private MyBean myBean;

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

    @RequestMapping("/mypage")
    public String myPage() {
        return "myPage";
    }
}
在我的配置文件中,我有
@Bean
,还有一个
InternalResourceViewResolver

@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;
    }
}
@Bean
public InternalResourceViewResolver getInternalResourceViewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/pages/");
    resolver.setSuffix(".jsp");
    resolver.setExposedContextBeanNames("myBean");
    return resolver;
}
这很好,我可以在jsp页面上访问
myBean

<script type="text/javascript">
    version = "${myBean.version}"
</script>
现在,我需要添加
myBean
作为
@modeldattribute
,以便在
myPage.jsp
上访问。如何在Java配置中执行此操作


编辑:这不是的副本。这显示了如何使用xml配置来实现。我想知道如何在我的Java
@Configuration
文件中执行此操作。

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

@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;
    }
}
@Bean
public InternalResourceViewResolver getInternalResourceViewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/pages/");
    resolver.setSuffix(".jsp");
    resolver.setExposedContextBeanNames("myBean");
    return resolver;
}

您将无法通过控制器注册表添加模型属性。相反,将
InternalResourceViewResolver
配置为向JSP公开bean(通过请求属性,这相当于对模型属性的处理)。@Boann和OP,答案是需要配置
InternalResourceViewResolver
。无论您是用XML还是Java来实现这一点都没有区别。