以下的方向 弹簧源 和书弹在行动中,我试图设置的弹簧视的方式,最大限度地减少xml配置。然而,根据弹源这是你如何设置的ControllerClassNameHandlerMap

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

<bean id="viewShoppingCart" class="x.y.z.ViewShoppingCartController">
    <!-- inject dependencies as required... -->
</bean>

这令我为是完全无用的,因为它实际上是简单的用处理程序只设置豆手动,因为它是关于相同数量的XML。

现在这本书春天的行动让它听起来像所有你需要的是在第一线,从那块代码使用ControllerClassNameHandlerMapping,这将使它更有用。然而,我们尚未能够得到这个工作。

任何人都可以用弹簧的经验帮助我吗?

有帮助吗?

解决方案

实际上有两个不同的东西会在这里:

  1. 之间的映射的网址和控制器
  2. 定义的控制,作为春季豆

#1,如果定义ControllerClassNameHandlerMapping为你所做的,这需要护理的网址以控制器的映射。E.g., http://example.com/context/home ->HomeController

#2,可以定义控制器豆如您所做的工作。或者你可以下去的道路使用弹簧2.5风格的注解@控制器和自动连线,这消除了需要XML豆的定义。或者不选择是给你的。

什么您避免使用ControllerClassNameHandlerMapping是具有显式地图上的所有潜在的网址,以控制器。我们已经用这一成功。

其他一件事你可能想使用是DefaultRequestToViewNameTranslator:

<!-- Generates view names based on the request url (e.g. "/home.htm" => "home", "/user/list.htm" => "user/list", etc.) -->
<bean id="viewNameTranslator" class="org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator"/>

我们还使用UrlBasedViewResolver:

<!-- Maps view names to tiles view definitions files.  E.g., "home" => "home", etc.  -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
</bean>

其他提示

我不认为使用ControllerClassNameHandlerMapping是一个良好的工程实践,因为它是真正阻止你做控制器上的Java类的重构工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top