Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring-MVC中的PUT方法_Java_Spring - Fatal编程技术网

Java Spring-MVC中的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

我尝试使用以下格式通过RESTtemplate发出put请求

 @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>