在我的春節,XML,我有以下片段:春天不會忽略文件擴展名
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="useDefaultSuffixPattern" value="false"/>
</bean>
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="objectMapper" ref="objectMapper" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
據我所知,這意味着,春季應不寄存器「ABC *」和「ABC /」當我有一個「ABC」的映射。
在我的控制器的一個我有一個圖像寫入響應的方法:
@RequestMapping(value="{path}", method=RequestMethod.GET, produces=MediaType.IMAGE_PNG_VALUE)
@ResponseBody
public void getPath(
@PathVariable String path,
HttpServletResponse res) {
...
}
這時候我要求像「ABC」的偉大工程,但是當我要求「abc.com」它拋出一個406錯誤與文本:
The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers."
當我請求「abc.img」,「路徑」參數僅接收文本「ABC」; Spring省略了擴展。
看來Spring並沒有正確地忽略後綴模式。爲什麼是這樣?
編輯:我翻譯了德克的評論java的配置,下面XML似乎解決這個問題:
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="favorPathExtension" value="false" />
</bean>
<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager">
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="objectMapper" ref="objectMapper" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
我仍然不知道爲什麼原來的代碼我是不起作用,但是這已經解決了我的問題
爲了記錄,我也試過使用@RequestMapping(value =「{path:。+}」),但沒有運氣 – user2221343
也許你被同樣的問題困擾了。看看這個問題:http://stackoverflow.com/q/22329393/1686330 –
是的,這似乎是相同的問題!我使用了這個問題的等價XML,並且能夠解決我的問題。如果你想把它作爲答案發布,我會很樂意接受它! – user2221343