我正在尝试在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'
请告诉我如何解决它。
提前致谢!
答案 0 :(得分:1)
替换它 /WEB-INF/group1-services.xml,/WEB-INF/group2-services.xml
与 /WEB-INF/group1-services.xml /WEB-INF/group2-services.xm
希望这会奏效...... :)
答案 1 :(得分: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来定义它。此帖子前面的参考文档链接提到了两个这样的处理程序:SimpleUrlHandlerMapping
或BeanNameUrlHandlerMapping
也许如果您使用处理程序/控制器XML的片段更新了您的问题,这可能会有所帮助吗?
答案 2 :(得分:0)
您是否将ContextLoaderListener添加到web.xml中?我没有看到它:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
答案 3 :(得分:0)
您需要在每个文件中包含以下内容:
<context:component-scan base-package="com.example.dao" />
如果文件中缺少该文件,则该文件的上下文中似乎不知道带注释的类。
您可能需要重新访问documentation了解详细信息。
答案 4 :(得分:0)
您的DispatcherServlet的处理程序映射不正确或者您使用了错误的URL。如果您修改SimpleUrlHandlerMapping配置周围的布局,我可以告诉您要更改的内容。