Spring MVC with JSON

Spring MVC with JSON

現在網站上使用JSON是非常普通的事,在Spring裡面也有直接提供可以回傳json物件,只要宣告回傳物件前加上@ResponseBody。

例如:


public @ResponseBody List<Group> GetGroup(){
	
	List<Group> list = new ArrayList<Group>;
	return list;
}

 

原本我都只用boolean值以及物件,昨天有一個功能想讓他直接回傳字串,結果發現編碼竟然跑掉了!原來StringHttpMessageConverter預設的編碼竟然是ISO-8859-1。

網路上找半天,原本看到的解法都是直接使用:


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

 

但是我試半天一直都不會動,後來才知道,原來使用<mvc:annotation-driven/>是不可以直接這樣設的,因為他會直接註冊DefaultAnnotationHandlerMapping & AnnotationMethodHandlerAdapter,設定會被蓋過去,所以要分別重新註冊。


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

所以…其實沒什麼特別原因,弄個物件直接回傳會比較簡單一點。

 

註:使用Spring 3.1

 

Dotblogs 的標籤: ,