-1

我正在尝试在 Spring 中拆分 ApplicationContext 文件。

例如。该文件是包含所有条目的 testproject-servlet.xml。现在我想根据逻辑组将这个单个文件拆分为多个文件,例如:group1-services.xml、group2-services.xml

我在 web.xml 中创建了以下条目:

<servlet>
    <servlet-name>testproject</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/group1-services.xml, /WEB-INF/group2-services.xml
        </param-value>
    </init-param>       
    <load-on-startup>1</load-on-startup>
</servlet>

我使用 SimpleUrlHandlerMapping 作为:

<bean id="simpleUrlMapping"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="order" value="0"/>
    <property name="mappings">
    <props>
        <prop key="/register.htm">RegisterController</prop>             <prop key="/payroll_services.htm">PayrollServicesController</prop>
    </props>
    </property>
</bean>

我还将控制器定义为:

<bean id="PayrollServicesController" class="com.triforce.b2bseek.businessservices.controller.PayrollServicesController">
      <property name="facadeLookup" ref="FacadeLookup"/>
      ..
      ..
      </property>
</bean> 

问题是我已将 ApplicationContext 文件“testproject-servlet.xml”拆分为两个不同的文件,并将上述条目保留在“group1-services.xml”中。好吗?我想根据它们在单独的 .xml 文件中的用途对它们进行逻辑分组。

但是当我尝试访问应用程序内的页面时出现以下错误:

org.springframework.web.servlet.DispatcherServlet noHandlerFound
WARNING: No mapping for [/TestProject/payroll_services.htm] in DispatcherServlet with name 'testproject'

请告诉我如何解决它。

提前致谢 !

4

5 回答 5

1

替换这个 /WEB-INF/group1-services.xml, /WEB-INF/group2-services.xml

与 /WEB-INF/group1-services.xml /WEB-INF/group2-services.xm

希望这会奏效...... :)

于 2011-05-10T06:33:07.210 回答
0

您需要在每个文件中包含以下内容:

<context:component-scan base-package="com.example.dao" />

如果文件中缺少它,则在该文件的上下文中似乎不知道带注释的类。

您可能需要重新访问文档以获取详细信息。

于 2009-03-05T21:04:36.460 回答
0

您是否将 ContextLoaderListener 添加到您的 web.xml 中?我没看到:

   <listener>
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>
于 2009-02-24T13:27:44.043 回答
0

我不认为这是你的contextConfigLocation问题

我认为更重要的是调度程序需要知道发送payroll_servives.htm到哪里,并且找不到合适的处理程序知道如何处理这种模式。

请参阅参考文档

您真的希望*.htm文件与调度程序 servlet 匹配吗?

如果您使用的是基于注解的控制器 ( @Controller),那么您需要有类似于以下内容的行:

<context:component-scan base-package="org.springframework.samples.petclinic.web"/>

这将安装一个适当的基于注释的处理程序,它搜索注释如下的类/方法:

@Controller
public class PayrollController {
     @RequestMapping("payroll_services.htm")
     public ModelAndView payrollServices() {
         ....
     }
}

否则,如果您使用更传统的处理程序/控制器,则需要使用 XML 定义它。本文前面的参考文档链接提到了两个这样的处理程序:SimpleUrlHandlerMappingBeanNameUrlHandlerMapping

也许如果您使用处理程序/控制器 XML 片段更新了您的问题,这可能会有所帮助?

于 2009-02-24T11:36:26.153 回答
0

DispatcherServlet 的处理程序映射不正确,或者您使用了错误的 url。如果您修复 SimpleUrlHandlerMapping 配置周围的布局,我可以告诉您要更改的内容。

于 2010-05-27T14:54:13.010 回答