dataTable salvar no banco de dados

20/03/2011

0

Bom dia pessoal eu tenho uma dataTable do primefaces e quero que as alterações feitas seja salva no banco de dados. Veja abaixo como foi feita a dataTable:

<h:form id="form">
            <p:dataTable paginator="true" paginatorPosition="bottom" selectionMode="single"
                         rows="30" var="can" value="#{relEngComJavaBean.dtm}">
                <f:facet name="header"><h:outputText value="Lista de Candidatos"/></f:facet>

                <p:column headerText="Campus">
                    <h:outputText value="#{can.campus}"/>
                </p:column>

                <p:column headerText="Nome">
                    <h:outputText value="#{can.nome}"/>
                </p:column>

                <p:column headerText="CPF">
                    <h:outputText value="#{can.cpf}"/>
                </p:column>

                <p:column headerText="Curriculo">
                    <p:cellEditor>
                        <f:facet name="output">
                            <h:outputText value="#{can.curriculo}">
                                <f:convertDateTime pattern="dd/MM/yyyy"/>
                            </h:outputText>
                        </f:facet>
                        <f:facet name="input"><p:calendar pattern="dd/MM/yyyy" id="curriculo" value="#{can.curriculo}" valueChangeListener="#{relEngComJavaBean.salvar}" onclick=""/></f:facet>
                    </p:cellEditor>
                </p:column>

                <p:column headerText="Matrícula">
                    <p:cellEditor>
                        <f:facet name="output">
                            <h:outputText value="#{can.matricula}">
                            </h:outputText>
                        </f:facet>
                        <f:facet name="input">
                            <h:selectOneMenu id="matricula" value="#{can.matricula}" valueChangeListener="#{relEngComJavaBean.salvar}" onclick="">
                                <f:selectItem itemLabel="Escolha" itemValue=""/>
                                <f:selectItem itemLabel="Matrículado" itemValue="matriculado"/>
                            </h:selectOneMenu>
                        </f:facet>
                    </p:cellEditor>
                </p:column>

                <p:column >
                    <p:rowEditor/>
                </p:column>
            </p:dataTable>
        </h:form>




Repare que foi criado 3 colunas para vizualização e 2 para edição.
Abaixo veja como ficou o Bean:

@ManagedBean
@RequestScoped
public class RelEngComJavaBean {

    private List<Candidato> listacandidatos = new ArrayList();
    private DataModel dtm;
    private Candidato candidato = new Candidato();
    private Candidato selectedCandidato;
    CandidatoPST candidatoPST = new CandidatoPST();

    public RelEngComJavaBean() {
        carregarCandidatos();
    }

    private void carregarCandidatos() {        
        candidatoPST.obter_candidato(listacandidatos);
        dtm = new ListDataModel(listacandidatos);
    }

    public void salvar(ValueChangeEvent event){
        carregarCandidatos();
        JOptionPane.showMessageDialog(null,"Salvar, Nome: "+ ((Candidato) dtm.getRowData()).getNome()+"  Data: "+((Candidato) dtm.getRowData()).getCurriculo()+"  Matrícula: "+((Candidato) dtm.getRowData()).getMatricula());

        //candidatoPST.manter_candidato(candidato);

    }

    public List<Candidato> getListacandidatos() {
        return listacandidatos;
    }

    public void setListacandidatos(List<Candidato> listacandidatos) {
        this.listacandidatos = listacandidatos;
    }

    public Candidato getSelectedCandidato() {
        return selectedCandidato;
    }

    public void setSelectedCandidato(Candidato selectedCandidato) {
        this.selectedCandidato = selectedCandidato;
    }

    public DataModel getDtm() {
        return dtm;
    }

    public void setDtm(DataModel dtm) {
        this.dtm = dtm;
    }    
}



Eu usei o DataModel para recuperar os valores, ai começa a dificuldade, no metodo salvar ele vai recuperar os dados, crei um JOptionPane para vizualizar as informações que são mostradas assim as treis primeiras colunas
que são de vizualizações o metodo consegue enxergar, as duas que são de edições ele não encherga, "deve estar perdendo o foco, devo trabalhar com alguma anotação especifica ou algo do genero", se alguem puder me ajudar  grato desde já.



1 tela.


2 tela.

Vagner Oliveira

Vagner Oliveira

Responder

Posts

25/03/2011

Dyego Carmo


Esta usando EclipseLink ? 
Adicione um filtro para abrir a sessao nao VIEW... pelo que vejo esta faltando apenas a sincronizacao com EntityManager !
Responder

27/03/2011

Vagner Oliveira


  E como seria esse filtro, para obter a sincronização.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar