Parâmetros de solicitação de primavera com Thymeleaf

Parâmetros de solicitação de primavera com Thymeleaf

1. Introdução

Em nosso artigoIntroduction to Using Thymeleaf in Spring, vimos como vincular a entrada do usuário a objetos.

Usamosth:objecteth:field no modelo Thymeleaf e@ModelAttribute no controlador para vincular dados a um objeto Java. In this article, we’ll look at how to use the Spring annotation @RequestParam in combination with Thymeleaf.

2. Parâmetros em formulários

Vamos primeiro criar um controlador simples que aceita quatro parâmetros de solicitação opcionais:

@Controller
public class MainController {
    @RequestMapping("/")
    public String index(
        @RequestParam(value = "participant", required = false) String participant,
        @RequestParam(value = "country", required = false) String country,
        @RequestParam(value = "action", required = false) String action,
        @RequestParam(value = "id", required = false) Integer id,
        Model model
    ) {
        model.addAttribute("id", id);
        List userIds = asList(1,2,3,4);
        model.addAttribute("userIds", userIds);
        return "index";
    }
}

O nome do nosso modelo de Thymeleaf éindex.html. In the following three sections, we’ll use different HTML form elements for the user to pass data to the controller.

2.1. Elemento de entrada

Primeiro, vamos criar um formulário simples com um campo de entrada de texto e um botão para enviar o formulário:

O atributoth:name=”participant” vincula o valor do campo de entrada ao parâmetroparticipant do controlador. For this to work, we need to annotate the parameter with @RequestParam(value = “participant”).

2.2. Selecionar elemento

Da mesma forma para o elemento de seleção HTML:

O valor da opção selecionada está vinculado ao parâmetrocountry, anotado com@RequestParam(value = “country”).

2.3. Elemento do botão

Outro elemento onde podemos usarth:name é o elemento de botão:

Dependendo se o primeiro ou o segundo botão for pressionado para enviar o formulário, o valor do parâmetroaction serácheck-in oucheck-out.

Outra maneira de passar parâmetros de solicitação a um controlador é por meio de um hiperlink:

E podemos adicionar parâmetros entre parênteses:

O Thymeleaf avalia o que foi dito acima para:

Using Thymeleaf expressions to generate hyperlinks is particularly useful if we want to assign parameter values based on variables. Por exemplo, vamos gerar um hiperlink para cada ID de usuário:

Podemos passar uma lista de IDs de usuário como uma propriedade para o modelo:

List userIds = asList(1,2,3);
model.addAttribute("userIds", userIds);

E o HTML resultante será:

O parâmetroid no hiperlink está vinculado ao parâmetroid, anotado com@RequestParam(value = “id”).

4. Sumário

Neste breve artigo, vimos como usar os parâmetros de solicitação do Spring em combinação com o Thymeleaf.

Primeiro, criamos um controlador simples que aceita parâmetros de solicitação. Segundo, vimos como usar o Thymeleaf para gerar uma página HTML que pode chamar nosso controlador.

O código-fonte completo para todos os exemplos neste artigocan be found on GitHub.