我有一个@Controller
,其@RequestMapping
将端点映射到我的jsp页面。在该控制器中,我使用@ModelAttribute
注释使我的配置文件中的@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;
}
}
这很好用,我可以在我的jsp页面上访问myBean
。
<script type="text/javascript">
version = "${myBean.version}"
</script>
但是,我想将控制器移动到Java Config中。我可以使用@RequestMapping
中的ViewController
完成相同的WebConfig
。
@Override
public void addViewControllers(final ViewControllerRegistry viewControllerRegistry) {
viewControllerRegistry.addViewController("/myPage").setViewName("myPage");
}
现在,我需要将myBean
添加为@ModelAttribute
,以便myPage.jsp
可以访问。如何在Java Config中执行此操作?
编辑:这不是this question的重复。这表明你将如何使用xml配置。我想知道如何在我的Java @Configuration
文件中执行此操作。
答案 0 :(得分:3)
以下是我在Java Config中配置InternalResourceViewResolver
的方法。您可以将jsp上需要访问的bean的名称传递给setExposedContextBeanNames
的{{1}}方法。
InternalResourceViewResolver