2016-04-25 11 views
0

Jungs das Problem ist, ich bin immer den FehlerAntrag Methode ‚POST‘ nicht Feder 4

Request method 'POST' not supported 

Hier ist mein Controller:

package com.mintad.spring.controllers; 

import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.util.List; 

import org.apache.log4j.LogManager; 
import org.apache.log4j.Logger; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.http.HttpStatus; 
import org.springframework.http.ResponseEntity; 
import org.springframework.ui.Model; 
import org.springframework.validation.BindingResult; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RequestParam; 
import org.springframework.web.bind.annotation.ResponseBody; 
import org.springframework.web.bind.annotation.RestController; 

import com.mintad.common.beans.Gouvernorate; 
import com.mintad.common.service.GouvernorateService; 

@RestController 
@RequestMapping("/data") 
public class DataController { 

    private static final Logger LOGGER = LogManager.getLogger(DataController.class); 

    @Autowired 
    private GouvernorateService gouvernorateService; 

    @RequestMapping(value = "/gouvernorates", method = RequestMethod.GET, produces = { "application/json" }) 
    public ResponseEntity<List<Gouvernorate>> getGouvernorates() throws FileNotFoundException { 
     return new ResponseEntity<List<Gouvernorate>>(gouvernorateService.findAll(), HttpStatus.OK); 
    } 

    @RequestMapping(value = "/addGouvernorate", method = RequestMethod.POST, produces = { "application/json" }) 
    public @ResponseBody ResponseEntity<Gouvernorate> addGouvernorate(BindingResult result, Model model, @RequestParam(name = "name") String name, 
      @RequestParam(name = "delegation") String delegation, @RequestParam(name = "district") String district, 
      @RequestParam(name = "postalCode") String postalCode) throws IOException { 
     LOGGER.info("addGouvernorate called"); 
     Gouvernorate gouvernorate = new Gouvernorate(name, delegation, district, postalCode); 
     gouvernorateService.addGouvernorat(gouvernorate); 
     return new ResponseEntity<Gouvernorate>(gouvernorate, HttpStatus.OK); 
    } 

    @RequestMapping(value = "/addTest", method = RequestMethod.POST) 
    public @ResponseBody String addTest(BindingResult result, Model model) { 

     LOGGER.info("addGouvernorate called"); 
     Gouvernorate gouvernorate = new Gouvernorate("test", "test", "test", "test"); 
     gouvernorateService.addGouvernorat(gouvernorate); 

     return "Your Professional Details Updated"; 

    } 
} 

Ich habe so viele Lösungen ausprobiert, aber in vergeblich. Ich werde dankbar für jede Hilfe

http://localhost:8080/mintad/data/addTest (POST) 
http://localhost:8080/mintad/data/addGouvernorate?name=test&delegation=test&district=test&postalCode=test (POST too) 

:

ich die Controller-Methode bin Aufruf als Anwendung unter Verwendung von Chrom Postman folgt!

+0

jede mögliche Hilfe bitte? – Sofiane

Antwort

0

Die Controller Version I hinzugefügt habe, ist richtig, aber es funktioniert nur, wenn ich deaktiviert CRSF in meiner Sicherheitskonfiguration Klasse Arsch folgt:

package com.mintad.spring.security; 

import javax.sql.DataSource; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Qualifier; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; 
import org.springframework.security.config.annotation.web.builders.HttpSecurity; 
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; 
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 
import org.springframework.security.core.userdetails.UserDetailsService; 

@Configuration 
@EnableWebSecurity 
@ComponentScan 
public class SecurityConfiguration extends WebSecurityConfigurerAdapter { 

    @Autowired 
    DataSource dataSource; 

    @Autowired 
    @Qualifier("customUserDetailsService") 
    UserDetailsService userDetailsService; 

    @Autowired 
    public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception { 
     auth.userDetailsService(userDetailsService); 
    } 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     // @formatter:off 
     http.csrf().disable(). 
     authorizeRequests() 
      .antMatchers("/", "/home","/data").permitAll() 
      .and().formLogin().loginPage("/login") 
      .defaultSuccessUrl("/welcome").usernameParameter("username").passwordParameter("password") 
      .and().exceptionHandling().accessDeniedPage("/404"); 
     // @formatter:off 
    } 
} 
0

Jungs Ich war völlig falsch in der Art, wie ich den Controller konzipiert habe.

So addTest Methode ist durch folgende ersetzen:

@RequestMapping(value = "/gouv/", method = RequestMethod.POST) 
    public ResponseEntity<String> addGouv(@RequestBody Gouvernorate gouv) { 

     log("addGouv called"); 
     gouvernorateService.addGouvernorate(gouv); 

     return new ResponseEntity<String>("User created", HttpStatus.CREATED); 

    } 

Wo gouvernorateService autwired ist.

Verwandte Themen