2014-07-22 15 views
5

Sto cercando di capire il codice del mio progetto durante l'apprendimento di Spring MVC.@RequestMapping senza parametro in Spring MVC

In primavera l'annotazione @RequestMapping accetta i parametri. Ad esempio,

@RequestMapping(value="/something", method=RequestMethod.POST) 
@RequestMapping(value="/index.html", method=RequestMethod.GET) 
@RequestMapping("/index") 
@RequestMapping(params="command=GETINFO") 

Il mio progetto utilizza annotazioni e non utilizza alcun XML per la mappatura. Ho una struttura sottostante di Controller.

@Controller 
public class RuleStepController { 
    private static final String ATTRIBUTE_BRANCH = "branch"; 
    private static final String ATTRIBUTE_EDIT_FORM = "editForm"; 
................. 
    @Autowired 
    private RuleStepService ruleStepService; 
    @Autowired 
    private PopulationDao populationDao; 

    @RequestMapping 
    public void ruleStepEntForm(Long populationId, ModelMap model) { 
    ..... 
    editForm.setStepEnt(stepDto); 
    } 

@RequestMapping 
    public void ruleStepOrgCount(RuleStepOrgSearchForm searchForm, ModelMap model){ 
     ....... 
model.addAttribute("searchForm", searchForm); 
    } 

@RequestMapping 
    public String ruleStepMgrForm() { 
     logger.debug(String.format("ruleStepMgrForm")); 
     return "forward:/employee/employeeSearchForm.view?relationshipId=0&roleId=0&formId=stepMgr"; 
    } 

vorrei capire che cosa sarebbe significato di @RequestMapping quando non porta alcun parametro?

Che cosa si intende per @AutoWired?

+1

quando @RequestMapping senza alcun parametro viene utilizzato su un metodo, allora usa il parametri del metodo per identificare i parametri di input dalla richiesta GET/POST. Per esempio. nel tuo metodo 'ruleStepEntForm', il parametro in GET/POST dovrebbe essere chiamato' populationId' – Pat

risposta

3
  1. con annotazione @RequestMapping è possibile associare i parametri di richiesta con diverse modalità:

    URI Patterns modello, utilizzare l'annotazione @PathVariable

    @RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET) 
    public String findOwner(@PathVariable String ownerId, Model model) { 
        Owner owner = ownerService.findOwner(ownerId); 
        model.addAttribute("owner", owner); 
        return "displayOwner"; 
    } 
    

    parametri di richiesta e di intestazione Valori

    @Controller 
    @RequestMapping("/owners/{ownerId}") 
    public class RelativePathUriTemplateController { 
    
        @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, params = "myParam=myValue") 
        public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) { 
         // implementation omitted 
        } 
    } 
    

    uso @RequestParam

    @Controller 
    @RequestMapping("/pets") 
    @SessionAttributes("pet") 
    public class EditPetForm { 
    
        @RequestMapping(method = RequestMethod.GET) 
        public String setupForm(@RequestParam("petId") int petId, ModelMap model) { 
         Pet pet = this.clinic.loadPet(petId); 
         model.addAttribute("pet", pet); 
         return "petForm"; 
        } 
    } 
    

    Mappatura del corpo della richiesta con l'annotazione @RequestBody

    @RequestMapping(value = "/something", method = RequestMethod.PUT) 
    public void handle(@RequestBody String body, Writer writer) throws IOException { 
        writer.write(body); 
    } 
    
  2. autowiring

    @Autowired 
    private RuleStepService ruleStepService; 
    

    Il contenitore Spring ha creato il bean ruleStepService prima. Se hai bisogno di utilizzare questo bean nella tua classe, devi solo dichiararlo come sopra e il contenitore inietterà il bean nella tua classe.Non è necessario dichiarare come;

    RuleStepService ruleStepService =new RuleStepService(). 
    

    Container troverà il nome di fagioli ruleStepService o il fagiolo ha digitare RuleStepService (sulla base della strategia in configurazione)

0

L'annotazione @RequestMapping utilizzata nei controllori ci consente non solo di implementare la corrispondenza del modello URL, ma anche di estrarre variabili dall'URL della richiesta stessa. Quindi devi avere un @RequestMapping o hai un parametro o meno. Di default, l'HTTP metodo mappato da un @RequestMapping è GET

Qui ci sono 2 buone referenze da fonte primavera:

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html

autowiring

ecco il link utili

http://howtodoinjava.com/2013/05/08/spring-beans-autowiring-concepts/

+1

Quindi, dato il codice presentato dall'OP, quale pattern di URI (richieste GET), sarà processato dal metodo 'ruleStepOrgCount'? – Raedwald

+1

Un metodo GET che non ha alcuna mappatura aggiuntiva è mappato alla radice della mappatura del controllore stesso. –

+1

Lo so. Ma in questo caso il '@ Controller' non ha un' @ RequestMapping'. Quindi, qual è * il suo * pattern URI? – Raedwald

Problemi correlati