স্প্রিং বিবেচনায় গত ডট পিছনে কিছু যেমন একটি ফাইল এক্সটেনশন হল যে .json
বা.xml
এবং এটি আপনার প্যারামিটারটি পুনরুদ্ধার করতে ট্রুকিয়েট করে।
সুতরাং আপনার যদি /somepath/{variable}
:
/somepath/param
, /somepath/param.json
, /somepath/param.xml
বা /somepath/param.anything
মান সহ কোনো PARAM পরিণাম ডেকে আনবেparam
/somepath/param.value.json
, /somepath/param.value.xml
বা /somepath/param.value.anything
মান সহ একটি পরম ফলাফলparam.value
আপনি যদি নিজের ম্যাপিংকে /somepath/{variable:.+}
প্রস্তাবিত হিসাবে পরিবর্তন করেন তবে সর্বশেষটি সহ যে কোনও বিন্দুটিকে আপনার প্যারামিটারের অংশ হিসাবে বিবেচনা করা হবে:
/somepath/param
মান সহ একটি পরম হবে param
/somepath/param.json
মান সহ একটি পরম হবে param.json
/somepath/param.xml
মান সহ একটি পরম হবে param.xml
/somepath/param.anything
মান সহ একটি পরম হবে param.anything
/somepath/param.value.json
মান সহ একটি পরম হবে param.value.json
- ...
আপনি যদি এক্সটেনশন স্বীকৃতির যত্ন না করেন তবে আপনি mvc:annotation-driven
স্বয়ংচালিত ওভাররাইড করে এটি অক্ষম করতে পারেন :
<bean id="handlerMapping"
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="contentNegotiationManager" ref="contentNegotiationManager"/>
<property name="useSuffixPatternMatch" value="false"/>
</bean>
সুতরাং, আবার, যদি আপনি /somepath/{variable}
:
/somepath/param
, /somepath/param.json
, /somepath/param.xml
বা /somepath/param.anything
মান সহ কোনো PARAM পরিণাম ডেকে আনবেparam
/somepath/param.value.json
, /somepath/param.value.xml
বা /somepath/param.value.anything
মান সহ একটি পরম ফলাফলparam.value
দ্রষ্টব্য: ডিফল্ট কনফিগারেশন থেকে পার্থক্য কেবলমাত্র আপনার কাছে ম্যাপিংয়ের মতো থাকলেই দৃশ্যমান somepath/something.{variable}
। দেখতে Resthub প্রকল্পের ইস্যু
যদি আপনি এক্সটেনশন ম্যানেজমেন্ট রাখতে চান তবে বসন্ত ৩.২ থেকে আপনি প্রত্যয়প্যাটার্নের স্বীকৃতি সক্রিয় রাখতে তবে নিবন্ধিত এক্সটেনশনের মধ্যে সীমাবদ্ধ রাখতে অনুরোধম্যাপিংহ্যান্ডলারম্যাপিং শিমের রেকর্ডার্ডসফিক্সপ্যাটারন ম্যাচ সম্পত্তিটিও সেট করতে পারেন।
এখানে আপনি কেবল জেসন এবং এক্সএমএল এক্সটেনশানগুলি সংজ্ঞায়িত করেছেন:
<bean id="handlerMapping"
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="contentNegotiationManager" ref="contentNegotiationManager"/>
<property name="useRegisteredSuffixPatternMatch" value="true"/>
</bean>
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="favorPathExtension" value="false"/>
<property name="favorParameter" value="true"/>
<property name="mediaTypes">
<value>
json=application/json
xml=application/xml
</value>
</property>
</bean>
নোট করুন যে এমভিসি: টিকাটি চালিত এখন একটি কাস্টম শিম সরবরাহ করার জন্য একটি বিষয়বহির্ভূত বিকল্প গ্রহণ করে তবে অনুরোধম্যাপিংহ্যান্ডলারম্যাপিংয়ের সম্পত্তিটি সত্য (ডিফল্ট মিথ্যা) হিসাবে পরিবর্তন করতে হবে (সিএফ। Https://jira.springsource.org/browse/SPR-7632 )।
যে কারণে, আপনাকে এখনও সমস্ত এমভিসি: টিকা-চালিত কনফিগারেশন ওভাররাইড করতে হবে। আমি একটি কাস্টম অনুরোধম্যাপিংহ্যান্ডলারম্যাপিং: https://jira.springsource.org/browse/SPR-11253 জিজ্ঞাসা করার জন্য স্প্রিংয়ে একটি টিকিট খুললাম । আপনি যদি আগ্রহী হন তবে দয়া করে ভোট দিন।
ওভাররাইড করার সময়, কাস্টম এক্সিকিউশন ম্যানেজমেন্ট ওভাররাইড বিবেচনা করার জন্য যত্নবান হন। অন্যথায়, আপনার সমস্ত কাস্টম ব্যতিক্রম ম্যাপিং ব্যর্থ হবে। আপনাকে একটি তালিকা বিন সহ বার্তাপ্রসূচকদের পুনরায় ব্যবহার করতে হবে:
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />
<util:list id="messageConverters">
<bean class="your.custom.message.converter.IfAny"></bean>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"></bean>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"></bean>
<bean class="org.springframework.http.converter.ResourceHttpMessageConverter"></bean>
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"></bean>
<bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"></bean>
<bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"></bean>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
</util:list>
<bean name="exceptionHandlerExceptionResolver"
class="org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver">
<property name="order" value="0"/>
<property name="messageConverters" ref="messageConverters"/>
</bean>
<bean name="handlerAdapter"
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="webBindingInitializer">
<bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="conversionService" ref="conversionService" />
<property name="validator" ref="validator" />
</bean>
</property>
<property name="messageConverters" ref="messageConverters"/>
</bean>
<bean id="handlerMapping"
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
</bean>
আমি বাস্তবায়িত হয়েছি, ওপেন সোর্স প্রকল্পে রিসথুব আমি যার অংশ, এই বিষয়গুলির জন্য পরীক্ষার একটি সেট: https://github.com/resthub/resthub-spring-stack/pull/219/files এবং https: // দেখুন github.com/resthub/resthub-spring-stack/issues/217