Я пытаюсь создать несколько спокойных веб-сервисов, используя Spring MVC 3.0. В настоящее время у меня есть проблема, что только один из моих 2 контроллеров будет работать в любой момент времени. Как выясняется, любой класс, который будет первым при сортировке по алфавиту, будет работать правильно. Я получаю ошибку:
handleNoSuchRequestHandlingMethod Не найден соответствующий метод обработчика для запроса сервлета: путь '/polinq.xml', метод 'GET', карта параметров [[пусто]]
Ранее у меня тоже было очень похожее сообщение, за исключением того, что вместо пустой карты это было что-то вроде map [v -> String (array)]
Независимо от сообщения, в настоящее время LocationCovgController работает, а PolicyInquiryController - нет. Если я изменю изменение PolicyInquiryController на APolicyInquiryController, то он начнет функционировать должным образом, и LocationCovgController перестанет работать.
Любая помощь будет принята с благодарностью.
Большое спасибо,
Джереми
Информация, представленная ниже, включает в себя скелет обоих классов контроллеров, а также файл конфигурации сервлета, который определяет, как должна быть настроена пружина.
Контроллер 1
package org.example;
@Controller
@RequestMapping(value = "/polinq.*")
public class PolicyInquiryController {
@RequestMapping(value = "/polinq.*?comClientId={comClientId}")
public ModelAndView getAccountSummary(
@PathVariable("comClientId") String commercialClientId) {
// setup of variable as was removed.
ModelAndView mav = new ModelAndView("XmlView",
BindingResult.MODEL_KEY_PREFIX + "accsumm", as);
return mav;
}
}
Контроллер 2
package org.example;
@Controller
@RequestMapping(value = "/loccovginquiry.*")
public class LocationCovgController {
@RequestMapping(value = "/loccovginquiry.*method={method}")
public ModelAndView locationCovgInquiryByPolicyNo(
@PathVariable("method")String method) {
ModelAndView mav = new ModelAndView("XmlView",
BindingResult.MODEL_KEY_PREFIX + "loccovg", covgs);
return mav;
}
}
Servlet Config
<context:component-scan base-package="org.example." />
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver" p:order="0">
<property name="mediaTypes">
<map>
<entry key="atom" value="application/atom+xml"/>
<entry key="xml" value="application/xml"/>
<entry key="json" value="application/json"/>
<entry key="html" value="text/html"/>
</map>
</property>
<property name="defaultContentType" value="text/html"/>
<property name="ignoreAcceptHeader" value="true"/>
<property name="favorPathExtension" value="true"/>
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</list>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
</list>
</property>
</bean>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
<bean id="XmlView" class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller" ref="marshaller"/>
</bean>
<oxm:jaxb2-marshaller id="marshaller">
<oxm:class-to-be-bound name="org.example.policy.dto.AccountSummary"/>
<oxm:class-to-be-bound name="org.example.policy.dto.InsuredName"/>
<oxm:class-to-be-bound name="org.example.policy.dto.Producer"/>
<oxm:class-to-be-bound name="org.example.policy.dto.PropertyLocCoverage"/>
<oxm:class-to-be-bound name="org.example.policy.dto.PropertyLocCoverages"/>
</oxm:jaxb2-marshaller>