matriculas.xhtml

Agora iremos demonstrar como construir uma interface para uma tabela que possui relações com outras tabelas.

O funcionamento é relativamente simples, será necessário selecionar um aluno e uma disciplina, previamente cadastrados em suas respectivas tabelas, e guardar esse relacionamento dentro da tabela matriculas.

<h:form id="tabela">

<h:form id="tabela">
    <p:commandButton value="Nova Matrícula" process="@this"
    update=":cadastro:nova-matricula-dialog"
    oncomplete="PF('nova-matricula-widget').show()" />
    <br/>
    <br/>
    <p:dataTable id="tabela-matriculas" var="matriculaMin"
    value="#{matriculaBean.matriculasMin}" sortBy="#{matriculaMin.aluno.nome}"
    expandableRowGroups="true" tableStyle="text-align:center" >

        <p:headerRow>
            <p:column colspan="1">
                <h:outputText value="Aluno(a): #{matriculaMin.aluno.nome}" />
            </p:column>
            <p:column colspan="1">
                <h:outputText value="RA: #{matriculaMin.aluno.matricula}" />
            </p:column>
            <p:column colspan="2">
                <h:outputText value="Período: #{matriculaMin.aluno.periodo}" />
            </p:column>
        </p:headerRow>

        <p:column headerText="Disciplina">
            <h:outputText value="#{matriculaMin.disciplina.nome}" />
        </p:column>

        <p:column headerText="Professor">
            <h:outputText value="#{matriculaMin.disciplina.professor}" />
        </p:column>

        <p:column headerText="Período da Disciplina">
            <h:outputText value="#{matriculaMin.disciplina.periodo}" />
        </p:column>

        <p:column style="width:40px;text-align: center">
            <p:commandButton update=":modifica:modifica-matricula-panel"
            oncomplete="PF('modifica-matricula-widget').show()"
            icon="ui-icon-arrow-4-diag" title="View"
            action="#{matriculaBean.enviaMatricula(matriculaMin)}" />
        </p:column>
    </p:dataTable>
</h:form>

<h:form id="cadastro">

<h:form id="cadastro">
    <p:dialog header="Nova Matrícula" widgetVar="nova-matricula-widget"
    id="nova-matricula-dialog" resizable="false"
    modal="false" closeOnEscape="true">
        <p:outputPanel style="text-align:center">
            <h:panelGrid  columns="2" columnClasses="label,value">
                <p:outputLabel value="Aluno: "  />
                <p:selectOneMenu value="#{matriculaBean.alunoSelecionado}"
                converter="alunoConverter" panelStyle="width:180px"
                effect="fade" var="a" style="width:160px"
                filter="true" filterMatchMode="startsWith">
                    <f:selectItem itemLabel="Selecione" itemValue="" />
                    <f:selectItems value="#{matriculaBean.alunos}"
                    var="aluno" itemLabel="#{aluno.matricula} - #{aluno.nome}"
                    itemValue="#{aluno}" />

                    <p:column style="width:10%">
                        <h:outputText value="#{a.matricula}" />
                    </p:column>

                    <p:column>
                        <h:outputText value="#{a.nome}" />
                    </p:column>
                </p:selectOneMenu>

                <p:outputLabel value="Disciplina "  />
                <p:selectOneMenu value="#{matriculaBean.disciplinaSelecionada}"
                converter="disciplinaConverter" panelStyle="width:180px"
                effect="fade" var="d" style="width:160px"
                filter="true" filterMatchMode="startsWith">
                    <f:selectItem itemLabel="Selecione" itemValue="" />
                    <f:selectItems value="#{matriculaBean.disciplinas}"
                    var="disciplina" itemLabel="#{disciplina.nome}"
                    itemValue="#{disciplina}" />

                    <p:column style="width:10%">
                        <h:outputText value="#{d.nome}" />
                    </p:column>
                </p:selectOneMenu>

                <br/>
                <p:commandButton id="btnCadastro" value="Cadastrar"
                action="#{matriculaBean.novaMatricula}"
                update=":tabela:tabela-matriculas"
                oncomplete="PF('nova-matricula-widget').hide()" >
                    <p:confirm header="Confirmação" message="Tem certeza?"
                    icon="ui-icon-alert"  />
                </p:commandButton>
                <p:confirmDialog global="true" showEffect="fade" hideEffect="fade">
                    <p:commandButton value="Sim" type="button"
                    styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
                    <p:commandButton value="Não" type="button"
                    styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
                </p:confirmDialog>

            </h:panelGrid>
        </p:outputPanel>
    </p:dialog>
    <p:defaultCommand target="btnCadastro" />
</h:form>

<h:form id="modifica">

<h:form id="modifica">
    <p:dialog header="Modificar Matrícula Selecionada"
    widgetVar="modifica-matricula-widget" modal="false"
    showEffect="fade" hideEffect="fade" resizable="false"
    id="modifica-matricula-dialog">
        <p:outputPanel id="modifica-matricula-panel"
        style="text-align:center">

            <h:panelGrid  columns="2" columnClasses="label,value">
                <p:outputLabel value="Aluno:" />
                <p:outputLabel value="#{matriculaBean.matriculaMinSelecionada.aluno.nome}" />
                <br/>
                <p:outputLabel value=""/>
                <p:outputLabel value="RA:" />
                <p:outputLabel value="#{matriculaBean.matriculaMinSelecionada.aluno.matricula}" />
                <br/>
                <p:outputLabel value=""/>
                <p:outputLabel value="Disciplina"  />
                    <p:selectOneMenu
                    value="#{matriculaBean.matriculaMinSelecionada.disciplina}"
                    converter="disciplinaConverter" panelStyle="width:180px"
                    effect="fade" var="d" style="width:160px"
                    filter="true" filterMatchMode="startsWith">
                        <f:selectItem itemLabel="Selecione" itemValue="" />
                        <f:selectItems value="#{matriculaBean.disciplinas}"
                        var="disciplina" itemLabel="#{disciplina.nome}"
                        itemValue="#{disciplina}" />

                        <p:column style="width:10%">
                            <h:outputText value="#{d.nome}" />
                        </p:column>
                    </p:selectOneMenu>
            </h:panelGrid>
            <br/>
            <p:commandButton value="Modificar" id="btnEdit"
            actionListener="#{matriculaBean.modificaMatricula}"
            update=":tabela:tabela-matriculas"
            oncomplete="PF('modifica-matricula-widget').hide()" >
                <p:confirm header="Confirmação" message="Tem certeza?"
                icon="ui-icon-alert"  />
            </p:commandButton>
            <p:confirmDialog global="true" showEffect="fade" hideEffect="fade">
                <p:commandButton value="Sim" type="button"
                styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
                <p:commandButton value="Não" type="button"
                styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
            </p:confirmDialog>
            <p:commandButton value="Excluir" actionListener="#{matriculaBean.deletaMatricula}"
            update=":tabela:tabela-matriculas"
            oncomplete="PF('modifica-matricula-widget').hide()">
                <p:confirm header="Confirmação" message="Tem certeza?" icon="ui-icon-alert"  />
            </p:commandButton>
            <p:confirmDialog global="true" showEffect="fade" hideEffect="fade">
                <p:commandButton value="Sim" type="button"
                styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
                <p:commandButton value="Não" type="button"
                styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
            </p:confirmDialog>
        </p:outputPanel>
    </p:dialog>
    <p:defaultCommand target="btnEdit" />
</h:form>

Link para download do arquivo matriculas.xhtml: https://gist.github.com/quisen/ededf8cdf2dd5a7b46b1ac8810f57671

results matching ""

    No results matching ""