コントローラーでxmlを返すためにresponseBodyアノテーションを使用しようとしています.IE以外のすべてのブラウザーは正常に動作します(Windows 7 x64でIE 9を使用しています)。何度かリクエストしてからリクエストに失敗することがわかりました.これに遭遇して助けを提供してくれる人がいることを願っています. 私のコードは次のとおりです: UserController.java.This は単純なコントローラーであり、ユーザーを表すオブジェクトを返します。
package com.spring;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class UserController
{
@RequestMapping("/user")
public @ResponseBody
User getUser()
{
User user = new User();
user.setName("shun");
user.setPassword("123123");
return user;
}
}
@XmlRootElement(name = "user")
class User
{
private String name;
private String password;
@XmlElement
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
@XmlElement
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
}
web.xml:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
Spring 構成ファイルとして spring-servlet.xml を使用しました。次のように:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
<mvc:annotation-driven />
<context:annotation-config />
<context:component-scan base-package="com.spring" />
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="xml" value="application/xml" />
<entry key="json" value="application/json" />
<entry key="jsonp" value="application/javascript" />
</map>
</property>
<property name="defaultContentType" value="text/html" />
<property name="ignoreAcceptHeader" value="true" />
<property name="favorPathExtension" value="true" />
<property name="favorParameter" value="true" />
<property name="parameterName" value="return_fmt"></property>
<property name="viewResolvers">
<list>
<bean
class="org.springframework.web.servlet.view.BeanNameViewResolver" />
</list>
</property>
<property name="defaultViews">
<list>
<bean
class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller">
<ref bean="castorMarshaller" />
</property>
</bean>
<bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</list>
</property>
</bean>
<bean id="castorMarshaller" class="org.springframework.oxm.castor.CastorMarshaller" />
</beans>
ちなみに、私のSpringバージョンは3.1.0です。テストには3.0.7も使用しましたが、同じ結果でした。プロジェクトを開始した後、chrome、firefox を使用してアクセスしましたが、すべて問題ありませんでしたが、IE 9 でアクセスしようとすると、この結果が表示されます。
誰が何が起こったのか教えてもらえますか?