Cursos / Informática para Internet / Desenvolvimento Web II / Aula

arrow_back Aula 04 - Desenvolvendo um Sistema de Informação Web com JSF

Desenvolvimento dos Controllers e Views pt.5

Observe que já temos os cadastros de empresa, cobrador, motorista e linhas referentes ao nosso sistema de transportes urbanos. Então, vamos ao controller que realiza o cadastro de ônibus centralizando todas as informações cadastradas anteriormente: CadastrarOnibusMBean. Esse controller é apresentado na Listagem 15 e, assim como todos os outros contollers, deve ser incluído no pacote br.ufrn.imd.controllers.

x
1
package br.ufrn.imd.controllers;
2
 
3
import java.util.ArrayList;
4
import java.util.List;
5
 
6
import javax.faces.application.FacesMessage;
7
import javax.faces.bean.ManagedBean;
8
import javax.faces.bean.SessionScoped;
9
import javax.faces.context.FacesContext;
10
 
11
import br.ufrn.imd.model.Cobrador;
12
import br.ufrn.imd.model.Empresa;
13
import br.ufrn.imd.model.Linha;
14
import br.ufrn.imd.model.Motorista;
15
import br.ufrn.imd.model.Onibus;
16
 
17
/**
18
    * Controller para cadastrar os ônibus.
19
    * @author itamir.filho
20
    *
21
*/
22
@ManagedBean
23
@SessionScoped
24
25
public class CadastrarOnibusMBean {
26
 
27
    private Onibus onibus;
28
     
29
    private List<Onibus> listagem;
30
     
31
    public CadastrarOnibusMBean() {
32
        iniciarValores();
33
        listagem = new ArrayList<Onibus>();
34
    }
35
         
36
    private void iniciarValores() {
37
        onibus = new Onibus();
38
        onibus.setMotorista(new Motorista());
39
        onibus.setLinha(new Linha());
40
        onibus.setEmpresa(new Empresa());
41
        onibus.setCobrador(new Cobrador());
42
    }
43
     
44
    public String entrarCadastro(){
45
        return "/form_onibus.jsf";
46
    }
47
     
48
    public String listar(){
49
        return "/list_onibus.jsf";
50
    }
51
     
52
    public String voltar(){
53
        return "/index.jsf";
54
    }
55
     
56
    public String cadastrar() {
57
        listagem.add(onibus);
58
        iniciarValores();
59
        FacesMessage msg = new FacesMessage("Ônibus cadastrado com sucesso!");
60
        msg.setSeverity(FacesMessage.SEVERITY_INFO);
61
        FacesContext.getCurrentInstance().addMessage("", msg);
62
        return "/form_onibus.jsf";
63
    }
64
     
65
    public Onibus getOnibus() {
66
        return onibus;
67
    }
68
     
69
    public void setOnibus(Onibus onibus) {
70
        this.onibus = onibus;
71
    }
72
     
73
    public List<Onibus> getListagem() {
74
        return listagem;
75
    }
76
     
77
    public void setListagem(List<Onibus> listagem) {
78
        this.listagem = listagem;
79
    }
80
81
}
Listagem 15 - Código da classe CadastrarOnibusMBean.

A view para cadastrar os ônibus é apresentada na Listagem 16. Essa página, denominada form_onibus.xhtml, também deve ser incluída na pasta WebContent do seu projeto.

47
1
<html xmlns="http://www.w3.org/1999/xhtml" 
2
xmlns:h="http://java.sun.com/jsf/html"
3
xmlns:f="http://java.sun.com/jsf/core">
4
    <h:head>
5
        <title>ônibus</title>
6
    </h:head>
7
8
    <h:body>
9
        <h:messages/>
10
        <h1>Novo ônibus</h1>
11
        <h:form>
12
            <fieldset>
13
                <p>Marca: <h:inputText value="#{cadastrarOnibusMBean.onibus.marca}" 
14
                    size="20" required="true" requiredMessage="Marca: Campo obrigatório." />
15
                    Ano: <h:inputText value="#{cadastrarOnibusMBean.onibus.ano}" 
16
                    size="5" required="true" requiredMessage="Ano Campo obrigatório." />
17
                </p>
18
                <p> Modelo: <h:inputText value="#{cadastrarOnibusMBean.onibus.modelo}" 
19
                    size="50" required="true" requiredMessage="Modelo: Campo obrigatório." /> </p>
20
                <p> Empresa:
21
                    <h:selectOneMenu value="#{cadastrarOnibusMBean.onibus.empresa.razaoSocial}">
22
                        <f:selectItems value="#{cadastrarEmpresaMBean.empresas}" /> 
23
                    </h:selectOneMenu>   
24
                </p>
25
                <p> Motorista:
26
                    <h:selectOneMenu value="#{cadastrarOnibusMBean.onibus.motorista.nome}">
27
                        <f:selectItems value="#{cadastrarMotoristaMBean.motoristas}" /> 
28
                    </h:selectOneMenu>  
29
                </p>
30
                <p>Cobrador:
31
                    <h:selectOneMenu value="#{cadastrarOnibusMBean.onibus.cobrador.nome}">
32
                        <f:selectItems value="#{cadastrarCobradorMBean.cobradores}" />
33
                    </h:selectOneMenu>  
34
                </p>
35
                <p>Linha:
36
                    <h:selectOneMenu value="#{cadastrarOnibusMBean.onibus.linha.ident}">
37
                        <f:selectItems value="#{cadastrarLinhaMBean.linhas}" /> 
38
                    </h:selectOneMenu>  
39
                </p>
40
                <p><h:commandButton value="Cadastrar" action="#{cadastrarOnibusMBean.cadastrar}" />
41
                    <h:commandButton value="Listar" action="#{cadastrarOnibusMBean.listar}" immediate="true"/>
42
                    <h:commandButton value="Voltar" action="#{cadastrarOnibusMBean.voltar}" immediate="true"/> 
43
                </p>
44
            </fieldset>
45
        </h:form>
46
    </h:body>
47
</html>
Listagem 16 - Código da página form_onibus.xhtml.

Ao implementar as Listagens 15 e 16, podemos acessar esse formulário pelo endereço http://localhost:8080/SITURB/form_onibus.jsf, onde obtemos a página apresentada na Figura 5.

Figura 05 - Página para cadastrar ônibus.
Página para cadastrar ônibus.

Versão 5.3 - Todos os Direitos reservados