我在Spring框架中使用Java EE。我一直在设置一个测试项目(到目前为止一切正常),我目前在控制器中有以下行,只需加载一个名为index.jsp
的视图:
return new ModelAndView("index");
这只是一个测试项目,所以我不担心语法或类似的东西。我只是想知道在Spring中从控制器中加载某个视图的最佳方法是什么?我确信像这样硬编码不是最佳实践,我只是想知道这样做的正确方法是什么?名称应该从某个配置文件中提取吗?
答案 0 :(得分:1)
这里的Spring模式是ViewResolver
。实质上,您的控制器返回您要转发到的视图的符号名称,Spring将该符号名称解析为实际视图。如果你没有另外配置它,那么它只会在最后粘贴.jsp
并使用它 - 最简单的情况。
但是,这可能会像您希望的那样复杂,包括,如您所建议的那样,使用配置文件将名称映射到实际的JSP。与Spring一样,有十几种不同的方法 - 请参阅this part of the docs。
答案 1 :(得分:0)
如果您使用的是SimpleFormControllers
,则可以设置formView和successView。在GET请求中返回formView,如果PUT请求中的所有内容都成功,则默认返回successView。
答案 2 :(得分:0)
在我上一篇Spring 3.0网络应用程序中,我使用了以下组合:
我的Controller类中用于视图名称的常量字符串字段
一个属性文件,其值覆盖由Spring通过“context:property-override”配置注入的字段值:
<context:property-override location="classpath:viewName.properties"/>
为了让后者工作,您必须在调度程序XML配置文件中将所有控制器列为bean,或者使用@Component("fooController")
对控制器进行注释(编辑:不确定@Controller("fooController")
是否有效而是?)注释然后引用属性文件中的字段,如下所示:fooController.someView=someJsp
。
不确定这是否是“最佳做法”,但对我来说效果不错。我确保在Controller类字段中添加注释,告诉未来的开发人员在属性文件中查找覆盖。