3

我正在使用 Spring MVC 尝试整个“约定优于配置”。Spring 有各种各样的工具来帮助解决这个问题,我正在尝试其中的一些。但是,我遇到了一个问题,我们团队的配置与 Spring 想要的不太匹配。

问题是我们获取像“ http://ourSite/SomePage.do ”这样的 URL,将它们放入“SomePageController”,然后用“somePage.jsp”渲染它们。请注意 SomePage.do 以大写字母开头,而 somePage.jsp 不是。似乎 Spring 的 DefaultRequestToViewNameTranslator 保留了大写字母,而 ViewResolvers 无法弄清楚如何使第一个字符小写。

有没有办法配置 NameTranslator 或 ViewResolver 使第一个字母小写?

4

1 回答 1

3

DispatcherServlet的Javadocs指定如何确定“viewNameTranslator”:

如果用户未提供视图或视图名称,则配置的 RequestToViewNameTranslator 会将当前请求转换为视图名称。对应的bean名称为“ viewNameTranslator”;默认为DefaultRequestToViewNameTranslator.

因此,如果您想要稍微不同的“视图名称转换器”行为,则必须提供自己的实例。您可能可以轻松地仅子类DefaultRequestToViewNameTranslator化以添加有关文件名大小写的逻辑。

但老实说,我真的建议您的控制器返回命名视图,而不必依赖与 URI 相同的视图名。这使您可以对多个 URL/控制器使用相同的视图,并允许您真正从 URL 中抽象出“视图”的概念。

(老实说,我已经在一个相当大的应用程序上使用 Spring MVC 大约 5 个月了,甚至不知道这个DefaultRequestToViewNameTranslator类在框架中,或者 DispatherServlet 将使用“viewNameTranslator”!)

于 2009-05-11T20:20:01.327 回答