Com o Spring 3.0, posso ter uma variável de caminho opcional?
Por exemplo
@RequestMapping(value = "/json/{type}", method = RequestMethod.GET)
public @ResponseBody TestBean testAjax(
HttpServletRequest req,
@PathVariable String type,
@RequestParam("track") String track) {
return new TestBean();
}
Aqui eu gostaria /json/abc
ou /json
chame o mesmo método.
Uma solução óbvia é declarada type
como um parâmetro de solicitação:
@RequestMapping(value = "/json", method = RequestMethod.GET)
public @ResponseBody TestBean testAjax(
HttpServletRequest req,
@RequestParam(value = "type", required = false) String type,
@RequestParam("track") String track) {
return new TestBean();
}
e então /json?type=abc&track=aa
ou /json?track=rr
vai funcionar
@RequestMapping
dois valores, como em: stackoverflow.com/questions/17821731/…@PathVariable
a@RequestParam
Se você estiver usando Spring 4.1 e Java 8 você pode usar
java.util.Optional
que é apoiado em@RequestParam
,@PathVariable
,@RequestHeader
e@MatrixVariable
no Spring MVC -fonte
"/json/{type}"
e digitar não estiver presente, não será atingido (como minha resposta vinculada sugere), mas aqui estávalue = {"/json/{type}", "/json" }
. Portanto, se alguém corresponder ao método do controlador, será atingido.@PathVariable(required = false)
e obter null se a variável não estiver presente.Não é sabido que você também pode injetar um mapa das variáveis de caminho usando a anotação @PathVariable. Não tenho certeza se esse recurso está disponível no Spring 3.0 ou se foi adicionado posteriormente, mas aqui está outra maneira de resolver o exemplo:
fonte
Você pode usar um:
para parâmetros opcionais em vez de um pathVariable
fonte
Exemplos Spring 5 / Spring Boot 2:
bloqueio
reativo
fonte
Exemplo simplificado do comentário de Nicolai Ehmann e da resposta do wildloop (funciona com o Spring 4.3.3+), basicamente você pode usar
required = false
agora:fonte
Verifique este WebMVC do Spring 3 - Variáveis de caminho opcionais . Ele mostra um artigo sobre como fazer uma extensão do AntPathMatcher para ativar variáveis de caminho opcionais e pode ser útil. Todos os créditos a Sebastian Herold por postar o artigo.
fonte
Aqui está a resposta diretamente da página de referência da baeldung: - https://www.baeldung.com/spring-optional-path-variables
fonte
fonte