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来实现这一点都没有区别。