Java Spring-MVC中的PUT方法
我尝试使用以下格式通过RESTtemplate发出put请求Java Spring-MVC中的PUT方法,java,spring,Java,Spring,我尝试使用以下格式通过RESTtemplate发出put请求 @Autowired RestTemplate template; @RequestMapping(value = "/change", method = RequestMethod.PUT) public ModelAndView change(Data data){ List<MediaType> acceptableMediaTypes = new ArrayList<MediaType
@Autowired
RestTemplate template;
@RequestMapping(value = "/change", method = RequestMethod.PUT)
public ModelAndView change(Data data){
List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
acceptableMediaTypes.add(MediaType.APPLICATION_XML);
HttpHeaders headers = new HttpHeaders();
headers.setAccept(acceptableMediaTypes);
HttpEntity<Data> entity = new HttpEntity<Data>(data, headers);
String url="http://www...com";
try {
template.put(url, entity);
} catch (Exception e) {
System.out.println(e);
}
return new ModelAndView("redirect:/home");
}
我真的不明白。我还应该换什么?对这个例外有何评论
配置:
<bean id="viewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver"
p:basename="config/views" p:order="1" />
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<bean class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="location">
<value>/WEB-INF/classes/config/xml-views.xml</value>
</property>
<property name="order" value="0" />
</bean>
<!--It is used for redirect-->
<bean id="urlBasedViewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value=""/>
<property name="suffix" value=""/>
<property name="order" value="2" />
</bean>
<context:annotation-config />
<!--<context:annotation-config />-->
<context:component-scan base-package="data.controller" />
<context:component-scan base-package="data.service" />
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
</list>
</property>
</bean>
/WEB-INF/classes/config/xml-views.xml
我猜应用程序的客户端是一个网页(然后是HTML)。解释如何使您的webapp为将来的浏览器兼容性做好准备(如果以后决定支持PUT、DELETE等操作)
总之,对于我们的项目,我们刚刚在web.xml中声明了以下几行:
hiddenHttpMethodFilter
org.springframework.web.filter.hiddenhttmpmethodfilter
hiddenHttpMethodFilter
/应用程序/*
本文讨论了要添加的javascript(可能是Spring3.0M1之前的版本),但我们发现这个解决方案更好,因为它只是一个配置 那么,当您调试时,您能够进入change方法吗?是的,但它不会给出任何错误。我是否正确地使用了put方法?有没有其他方法来执行put请求?您可以调试模板发送到的那一方吗?那一方明白了吗?或者是你没有访问权限的东西?我没有访问权限。所以这就是我试图接收消息或错误消息的原因。嗯,对此不确定。您可以尝试将responseType字段设置为null,并使响应变量的类型为ResponseEntity——这至少可以让您看到HTTP详细信息。另外,您是否可以通过Rest客户端插件之类的东西在浏览器中尝试PUT请求,看看是否可以让它以这种方式工作?你也可能从中得到更好的反馈。
Accept: application/xml
<bean id="viewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver"
p:basename="config/views" p:order="1" />
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<bean class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="location">
<value>/WEB-INF/classes/config/xml-views.xml</value>
</property>
<property name="order" value="0" />
</bean>
<!--It is used for redirect-->
<bean id="urlBasedViewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value=""/>
<property name="suffix" value=""/>
<property name="order" value="2" />
</bean>
<context:annotation-config />
<!--<context:annotation-config />-->
<context:component-scan base-package="data.controller" />
<context:component-scan base-package="data.service" />
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
</list>
</property>
</bean>