1. 程式人生 > >SpringMVC3 AnnotationMethodHandlerAdapter與mvc:annotation-driven衝突的解決方案

SpringMVC3 AnnotationMethodHandlerAdapter與mvc:annotation-driven衝突的解決方案

1、問題

在使用SpringMVC3時,需要對response到頁面的資料進行編碼設定則需要自定義註解資料格式化類來對頁面傳過來的字串進行格式化。

編碼設定:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >  
        <property name="messageConverters">  
             <list>  
                 <bean class = "org.springframework.http.converter.StringHttpMessageConverter">  
                    <property name = "supportedMediaTypes">  
                         <list>  
                             <value>text/plain;charset=UTF-8</value>  
                         </list>  
                    </property>  
                 </bean>  
             </list>  
        </property>  
    </bean> 


Formatter設定:

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">  
	  <property name="formatters">  
	      <list>  
	          <bean class="com.grgbanking.it.common.formatter.TimestampFormatAnnotationFormatterFactory"/>  
	      </list>  
	  </property>  
	</bean> 
	<mvc:annotation-driven conversion-service="conversionService"/>


當兩者按上面的設定好後,StringHttpMessageConverter不起作用了。

2、原因

<mvc:annotation-driven />的配置如下:

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
		<property name="order" value="1" />
	</bean>
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="webBindingInitializer">
		  <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
		   <property name="conversionService" ref="conversionService" />
		   <property name="validator" ref="validator" />
		  </bean>
		</property>
	</bean>
	<bean id="conversionService" class="org.springframework.samples.petclinic.util.PetclinicConversionServiceFactory" />
	<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" /> 

從上面的配置資訊來看,<mvc:annotation-driven />相當於註冊了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter兩個bean。

所以我們在上面配置的AnnotationMethodHandlerAdapter在<mvc:annotation-driven />後是不起作用的。<mvc:annotation-driven />包括了一個預設的AnnotationMethodHandlerAdapter功能。

3、解決

把StringHttpMessageConverter配置在<mvc:annotation-driven />裡面。
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">  
	  <property name="formatters">  
	      <list>  
	          <bean class="com.grgbanking.it.common.formatter.TimestampFormatAnnotationFormatterFactory"/>  
	      </list>  
	  </property>  
	</bean> 
	
	<!-- 設定轉換器 -->
	<mvc:annotation-driven conversion-service="conversionService">
		<mvc:message-converters>  
        	 <bean class = "org.springframework.http.converter.StringHttpMessageConverter">  
                    <property name = "supportedMediaTypes">  
                         <list>  
                             <value>text/plain;charset=UTF-8</value>  
                         </list>  
                    </property>  
                 </bean>  
        </mvc:message-converters>
	</mvc:annotation-driven>


注:上面方法只適用於SpringMVC 3.1.x以上版本。

相關推薦

SpringMVC3 AnnotationMethodHandlerAdaptermvc:annotation-driven衝突解決方案

1、問題 在使用SpringMVC3時,需要對response到頁面的資料進行編碼設定則需要自定義註解資料格式化類來對頁面傳過來的字串進行格式化。 編碼設定: <bean class="org.springframework.web.servlet.mvc.anno

context:annotation-configmvc:annotation-driven和context:component-scan詳解

現在常用框架中SpringMVC.xml配置是: <mvc:annotation-driven/>和<context:component-scan> 那麼<context:annotation-config/>呢? 【1】

AnnotationMethodHandlerAdaptermvc:annotation-driven對型別轉換和HttpMessageConverter的配置

1. databind Servlet中的輸入引數為都是string型別,而spring mvc通過data bind機制將這些string 型別的輸入引數轉換為相應的command object(根據view和controller之間傳輸資料的具體邏輯,也可稱為model

ScrollViewviewpager滑動事件衝突,點選事情衝突解決方案

在產品適配的時候我加了ScrollView,但是產品提出了一個向上輪播需求 首先把豎直向上的viewpager粘出來: package com.cfiigroup.zhehui.hepaidai.view; import android.view.MotionEvent; impo

Android ScrollViewListView,GridView共存衝突解決方案

我們在真實專案中通常會遇到ListView或者GridView巢狀在ScrollView中問題。但是做的時候會發現,一旦兩者進行巢狀,即會發生衝突。得不到我們希望的效果。由於ListView和GridView本身都繼承於ScrollView,一旦在ScrollView中巢

大三筆記(mvc:annotation-driven配置中文亂碼問題)

<mvc:annotation-driven/>: 這個類主要是用來向工廠中註冊了 RequestMappingHandlerMapping  BeanNameUrlHandlerMapping RequestMappingHandlerAdapter

SpringMVC配置檔案The prefix "mvc" for element "mvc:annotation-driven" is not bound 的解決方法

在xml的beans中新增  xmlns:mvc="http://www.springframework.org/schema/mvc"  xsi:schemaLocation="http://www.springframework.org/schema/mvc http:

The prefix "mvc" for element "mvc:annotation-driven" is not bound 的解決方法

在springmvc配置檔案裡面寫預設的註解對映的支援的時候:<mvc:annotation-driven />The prefix "mvc" for element "mvc:annotation-driven" is not bound。 解決辦法:  

解決@ResponseBody不能和 <mvc:annotation-driven>同時使用的問題

我們都知道使用Springmvc的ajax很強大隻要三步就可以實現: 1.引入jackson的maven到pom檔案: <dependency> <groupId>com.fasterxml.jackson.core</groupId>

<mvc:annotation-driven>新增標簽

rst 我們 mod param acc redirect tro adapter tpi 以下為spring mvc 3.1中annotation-driven所支持的全部配置 <mvc:annotation-driven message-codes-resol

<mvc:annotation-driven>註冊了什麽

span tor pre provides register aop and tco obj 前言 上一篇文章dispatcherservlet初始化中提到,如果沒有配置handlermapping就會采取默認的策略進行配置handlermapping,這篇文章就要講

使用@Controller註解為什麽要配置<mvc:annotation-driven />

讀寫 factory 註釋驅動 ida read patch calendar ber ping <mvc:annotation-driven/>相當於註冊了DefaultAnnotationHandlerMapping和AnnotationMethodHand

轉:<mvc:annotation-driven/>的註解意義

fig ioc容器 註冊 dap explicit json處理 The don eve <mvc:annotation-driven /> 是一種簡寫形式,完全可以手動配置替代這種簡寫形式,簡寫形式可以讓初學都快速應用默認配置方案。<mvc:annota

unity3dScrollRectOnDrag事件的衝突解決方法

借鑑  https://www.jianshu.com/p/8bfe94822886 using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; /// <summary> /// 指令碼掛載到每個可拖拽

Springmvc之mvc:annotation-driven標籤

一、<mvc:annotation-driven>標籤的作用:                   

mvc:annotation-driven mvc:default-servlet-handler和 ontext:component-scan base-package三者的關係

<mvc:annotation-driven />mvc:default-servlet-handler/和 <context:component-scan base-package=“com”></context:comp

mvc:annotation-driven註解的作用

一、<mvc:annotation-driven />註解意義 主要就是為了Spring MVC來用的,提供Controller請求轉發,json自動轉換等功能 <mvc:annotation-driven /> 是一種簡寫形式,完全可以手動配置替

SpringMvc之 mvc:annotation-driven標籤

在我們要完成比較複雜的資料型別轉換時(比如:頁面輸入的String型別轉換成Date型別,將頁面的String型別轉換成封裝成一個物件時)需要在SpringMvc的配置檔案中新增<mvc:annotation-driven/>標籤。      那<mvc:

mvc:annotation-driven的作用

<mvc:annotation-driven /> 會自動註冊RequestMappingHandlerMapping、RequestMappingHandlerAdapter 與xceptionHandlerExceptionResolver 三個bean。

菜鳥程式猿之VelocityjQuery的$發生衝突解決辦法

開發中檢視層引入jquery很平常的場景,今天使用jquery的ajax在velocity中呼叫,出現檢視錯誤,經查詢,發現jQuery 的$與velocity檢視技術有衝突,為此,解決方法有三種: 1、使用jQuery代替$。 如:jQuery.ajax();