Trabalhando com Enums no Thymeleaf

Trabalhando com Enums no Thymeleaf

1. Introdução

Neste tutorial rápido, aprenderemos como trabalhar com enums emThymeleaf.

Começaremos listando os valores enum em uma lista suspensa. Depois disso, veremos como usar nosso enum para controle de fluxo em nossos modelos.

2. Configuração

Vamos começar adicionandoSpring Boot starter for Thymeleaf ao nosso arquivopom.xml:


    org.springframework.boot
    spring-boot-starter-thymeleaf
    2.1.6.RELEASE

Vamos trabalhar com widgets que têm algumas opções de cores, então vamos definir nossaColor enum:

public enum Color {
    BLACK, BLUE, RED, YELLOW, GREEN, ORANGE, PURPLE, WHITE
}

Agora, vamos criar nossa classeWidget:

public class Widget {
    private String name;
    private Color color;

    // Standard getters/setters
}

3. Exibindo enums em um menu suspenso

Vamos usarselect and option para criar uma lista suspensa que usa nosso enumColor:

The T operator is part of the Spring Expression Language para especificar uma instância de uma classe ou acessar métodos estáticos.

Se executarmos nosso aplicativo e navegarmos para a página de entrada do widget, veremos todas as nossas cores no menu suspensoColor:

image

Quando enviamos nosso formulário,our Widget object will be populated with the selected color:

image

4. Usando um nome para exibição

Como todas as letras maiúsculas podem ser um pouco chocantes, vamos expandir nosso exemplo para fornecer rótulos suspensos mais fáceis de usar.

Começaremos modificando nossoColor enum para fornecer um nome de exibição:

public enum Color {
    BLACK("Black"),
    BLUE("Blue"),
    RED("Red"),
    YELLOW("Yellow"),
    GREEN("Green"),
    ORANGE("Orange"),
    PURPLE("Purple"),
    WHITE("White");

    private final String displayValue;

    private Color(String displayValue) {
        this.displayValue = displayValue;
    }

    public String getDisplayValue() {
        return displayValue;
    }
}

A seguir, vamos passar para o nosso modelo Thymeleaf e atualizar nosso menu suspenso para usar o novodisplayValue:

Nosso menu suspenso agora é exibido com os nomes de cores mais legíveis:

image

5. Instruções If

Às vezes, podemos querer variar o que estamos exibindo com base nos valores de um enum. Podemos usar nosso enumColor comThymeleaf conditional statements.

Vamos imaginar que temos opiniões sobre algumas das possíveis cores do widget.

Podemos usar uma instrução Thymeleafif com nosso enumColor para exibir o texto condicionalmente:

This color screams danger.

Outra opção é usar uma comparaçãoString:

Green is for go.

6. Instruções de caso de switch

Além das declaraçõesif, o Thymeleaf suporta uma declaraçãoswitch-case.

Vamos usar uma instruçãoswitch-case com nosso enumColor:

Alert Warning Caution All Good

Se inserirmos um widget laranja, devemos ver nossa declaração de aviso:

image

7. Conclusão

Neste tutorial, começamos usando o Thymeleaf para criar um menu suspenso usando a enumColor que definimos em nosso aplicativo. A partir daí, aprendemos como tornar os valores de exibição suspensos mais legíveis.

Depois de examinar o lado de entrada com a lista suspensa, passamos para o lado de saída e aprendemos a trabalhar com enumerações em estruturas de controle. Usamos as instruçõesifeswitch-case para condicionar alguns elementos com base em nosso enumColor.

O exemplo completo está disponívelover on GitHub.