Differenza tra il parametro della proprietà di @requestMapping e @requestParam [duplicato]

Sep 13 2020

Ho scoperto che entrambi i parametri di proprietà di @requestMapping e @requestParam potrebbero realizzare il parametro del metodo di associazione all'indirizzo URL? Quindi, in generale, possono essere sostituiti l'uno dall'altro?

Risposte

2 AliTahir Sep 13 2020 at 23:00

probabilmente avresti dovuto elaborare la tua domanda con degli esempi.

In ogni caso, i parametri @RequestMapping e @RequestParams sono generalmente utilizzati per scopi diversi

Facciamo l'esempio di:https://stackoverflow.com/ domande / 63871895

In questo URI possiamo vedere due diversi gestori in un controller.

@RequestMapping(path = "/questions/{id}", method = RequestMethod.GET)
public Question getQuestion(@PathVariable int id) {
// returns a particular question
}

@RequestMapping(path = "/questions", method = RequestMethod.GET)
public List<Question> getQuestions() {
// returns all questions
}

Ora qui, le mappature dei parametri sono considerate come restrizioni che vengono applicate. La mappatura del percorso primario (ovvero il valore URI specificato) deve ancora identificare in modo univoco il gestore di destinazione, con mappature dei parametri che esprimono semplicemente le precondizioni per invocare il gestore.

Ora, vediamo un esempio per @RequestParams: https://www.google.com/search?client=opera&q=stackoverflow&sourceid=opera&ie=UTF-8&oe=UTF-8

In questo URL possiamo vedere un gestore come:

@RequestMapping(path = "/search", method = RequestMethod.GET)
public List<Results> getResults(@RequestParam Map allRequestParams) {
// returns results based on query parameters
}  

Questo chiamerà sempre lo stesso gestore indipendentemente dal fatto che i parametri della query siano forniti o meno. Quindi @RequestParams viene utilizzato per estrarre i parametri di query dall'URL.

Quindi, in generale, puoi provare a utilizzare i parametri @RequestMapping al posto di @RequestParams ma avrà gli effetti spiegati negli esempi precedenti.

fonti :https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html