Validação de Devedor com JSF: Bean, Facelets e Mensagens

Educação Artística4,11 KB

Questão 1 - Facelet e Managed Bean

Dado o facelet abaixo com os campos cpf e saldo e a classe Devedor, indique o resultado do método ver() com a condição de falha ou sucesso.

Resposta:

@ManagedBean(name="dev")
public class Devedor {
    private int c;
    private double s;

    public int getC() {
        return c;
    }

    public void setC(int c) {
        this.c = c;
    }

    public double getS() {
        return s;
    }

    public void setS(double s) {
        this.s = s;
    }

    public String ver() {
        if (s > 0.0) {
            return "sucesso";
        } else {
            return "falha";
        }
    }
}

Questão 2 - Navegação com faces-config

Baseado na Questão 1 e sabendo que a página de cadastro é cadastro.xhtml, configure o faces-config.xml:

<managed-bean>
    <managed-bean-name>dev</managed-bean-name>
    <managed-bean-class>pacote.Devedor</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

<navigation-rule>
    <from-view-id>/cadastro.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>sucesso</from-outcome>
        <to-view-id>/resposta.xhtml</to-view-id>
    </navigation-case>
    <navigation-case>
        <from-outcome>falha</from-outcome>
        <to-view-id>/msg.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

Questão 3 - Facelet com campos obrigatórios

Reescreva o código XHTML da Questão 1, tornando obrigatórios o CPF e o saldo, com valor mínimo de -20.000.

<h:form>
    <h:outputLabel for="c" value="CPF:"/>
    <h:inputText id="c" value="#{dev.c}" required="true"
        requiredMessage="Este campo deve ser preenchido"/>

    <h:outputLabel for="s" value="Saldo:"/>
    <h:inputText id="s" value="#{dev.s}" required="true"
        requiredMessage="Este campo deve ser preenchido"
        converterMessage="Este valor deve ser um número real"
        validatorMessage="Este valor deve ser maior que -20.000">
        <f:validateDoubleRange minimum="-20000"/>
    </h:inputText>

    <h:commandButton value="Enviar" action="#{dev.ver}"/>
</h:form>

Questão 4 - Validação customizada de CPF

Implemente um método de validação customizada utilizando CPF.ehValido(n).

public void validaCPF(FacesContext context, UIComponent comp, Object n) throws ValidatorException {
    boolean b = CPF.ehValido((String) n);
    if (!b) {
        FacesMessage mensagem = new FacesMessage("CPF inválido");
        throw new ValidatorException(mensagem);
    }
}

Associação no cadastro.xhtml:

<h:inputText id="cpf" value="#{dev.c}" validator="#{dev.validaCPF}"/>

Questão 5 - Mensagens centralizadas em arquivo .properties

Centralize as mensagens utilizadas em um arquivo .properties:

c=CPF{0}
s=Saldo{1}
msgRequerimento=Por favor preencha os campos {0} e {1}
msgResp1=O {0} número
msgResp2=Está com saldo R$
msgSucesso=Em dia!
msgFalha=Devedor!

Configuração no faces-config.xml:

<application>
    <resource-bundle>
        <base-name>mensagens</base-name>
        <var>msg1</var>
    </resource-bundle>
</application>

Uso em resposta.xhtml e msg.xhtml:

#{msg1.msgResp1} #{dev.c}
#{msg1.msgResp2} #{dev.s}
#{msg1.msgSucesso}
#{msg1.msgFalha}

Complemento - MIDlet (Java ME)

Uma classe MIDlet deve estender javax.microedition.midlet.MIDlet e sobrescrever os métodos abstratos startApp(), pauseApp() e destroyApp(boolean unconditional).

Baixar

PDF Word HTML