Objeto selecionado rich:extendedDataTable

2 respostas
viniciusfaleiro

Como eu pego o objeto selecionado da tabela???

<rich:extendedDataTable
                value="#{ListaAulas.aulas}" var="aula" id="table"
                width="435px" height="400px"
                sortMode="single"
                selectionMode="single"
                selection="#{ListaAulas.selecao}">

                <rich:column sortable="true" label="Data"
                             sortBy="#{aula.data}" filterEvent="onkeyup">

                    <f:facet name="header">
                        <h:outputText value="Data" />
                    </f:facet>

                    <h:outputText value="#{aula.data}">
                        <f:convertDateTime pattern="dd/MM/yyyy"/>
                    </h:outputText>

                </rich:column>

                <rich:column sortable="false"
                             filterBy="#{aula.horaInicio}" width="170px"
                             label="Hora de Início">

                    <f:facet name="header">
                        <h:outputText value="Hora de Início" />
                    </f:facet>

                    <h:outputText value="#{aula.horaInicio}" />

                </rich:column>

                <rich:column sortable="false"
                             filterBy="#{aula.horaInicio}" width="170px"
                             label="Hora de Término">

                    <f:facet name="header">
                        <h:outputText value="Hora de Término" />
                    </f:facet>

                    <h:outputText value="#{aula.horaFim}" />
                </rich:column>

            </rich:extendedDataTable>

ManagedBean (Tentei criar um atributo do tipo Aula de nome aula_selecionada. Dai eu setaria … más como??)

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package MngBeans;

import DAOs.AulaDAO;
import java.util.List;
import javax.faces.context.FacesContext;
import org.hibernate.Session;
import org.richfaces.model.selection.SimpleSelection;

/**
 *
 * @author Vinicius
 */
public class ListaAulas {

    private List<Aula> aulas;
    private SimpleSelection selecao;
    private Aula aula_selecionada;

    /** Creates a new instance of ListaAulas */
    public ListaAulas() {
        selecao = new SimpleSelection();
        aula_selecionada = new Aula();

        Session session = Util.HibernateUtil.getSessionFactory().openSession();

        FacesContext fc = FacesContext.getCurrentInstance();
        Funcionario func = (Funcionario) fc.getApplication().getVariableResolver().resolveVariable(fc, "func");

        AulaDAO aulaDAO = new AulaDAO(session);

        aulas = aulaDAO.findAulaParticipada(func);
    }

    /**
     * @return the aulas
     */
    public List<Aula> getAulas() {
        return aulas;
    }

    /**
     * @param aulas the aulas to set
     */
    public void setAulas(List<Aula> aulas) {
        this.aulas = aulas;
    }

    /**
     * @return the selecao
     */
    public SimpleSelection getSelecao() {
        return selecao;
    }

    /**
     * @param selecao the selecao to set
     */
    public void setSelecao(SimpleSelection selecao) {
        this.selecao = selecao;

    }

    /**
     * @return the aula_selecionada
     */
    public Aula getAula_selecionada() {
        return aula_selecionada;
    }

    /**
     * @param aula_selecionada the aula_selecionada to set
     */
    public void setAula_selecionada(Aula aula_selecionada) {
        this.aula_selecionada = aula_selecionada;
    }
}

2 Respostas

G

bom vc pode estender a el da jboss e passar um parametro pra uma função do seu mb, com por exemplo a chave da tabela.

viniciusfaleiro

Eu nÃo queria sair passando parametro… Queria usar mais OO… Então fiz assim:

Minha página

<rich:extendedDataTable
                var="aula" id="table"
                width="442px" height="400px" rows="15"
                value="#{extendedTableBean.aulasDataModel}"
                sortMode="#{extendedTableBean.sortMode}"
                selectionMode="#{extendedTableBean.selectionMode}"
                tableState="#{extendedTableBean.tableState}"
                selection="#{extendedTableBean.selection}">

                <rich:column sortable="true" label="Data"
                             sortBy="#{aula.data}" filterEvent="onkeyup">

                    <f:facet name="header">
                        <h:outputText value="Data" />
                    </f:facet>

                    <h:outputText value="#{aula.data}">
                        <f:convertDateTime pattern="dd/MM/yyyy"/>
                    </h:outputText>

                </rich:column>

                <rich:column sortable="false"
                             filterBy="#{aula.horaInicio}" width="170px"
                             label="Hora de Início">

                    <f:facet name="header">
                        <h:outputText value="Hora de Início" />
                    </f:facet>

                    <h:outputText value="#{aula.horaInicio}" />

                </rich:column>

                <rich:column sortable="false"
                             filterBy="#{aula.horaInicio}" width="170px"
                             label="Hora de Término">

                    <f:facet name="header">
                        <h:outputText value="Hora de Término" />
                    </f:facet>

                    <h:outputText value="#{aula.horaFim}" />
                </rich:column>
                <f:facet name="footer">
                    <rich:datascroller for="table" maxPages="10" id="ds"/>
                </f:facet>

                <a4j:support reRender="exerc_table"
                             action="#{extendedTableBean.takeSelection}"
                             event="onselectionchange" />
            </rich:extendedDataTable>

Meu ManagedBean

package MngBeans;

import DAOs.AulaDAO;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.faces.context.FacesContext;
import org.hibernate.Session;
import org.richfaces.model.DataProvider;
import org.richfaces.model.ExtendedTableDataModel;
import org.richfaces.model.selection.Selection;
import org.richfaces.model.selection.SimpleSelection;

/**
 * @author Ilya Shaikovsky
 *
 */
public class ExtendedTableBean {

    private String sortMode = "single";
    private String selectionMode = "single";
    private Object tableState;
    private Selection selection = new SimpleSelection();
    private List<Aula> aulas;
    private ExtendedTableDataModel<Aula> dataModel;
    private Aula selectedaula;
    private List<Exercicio> exercicios;

    public ExtendedTableBean() {
        selectedaula = new Aula();
        exercicios = new ArrayList();

        Session session = Util.HibernateUtil.getSessionFactory().openSession();

        FacesContext fc = FacesContext.getCurrentInstance();
        Funcionario func = (Funcionario) fc.getApplication().getVariableResolver().resolveVariable(fc, "func");

        AulaDAO aulaDAO = new AulaDAO(session);

        aulas = aulaDAO.findAulaParticipada(func);
    }

    public String getSortMode() {
        return sortMode;
    }

    public void setSortMode(String sortMode) {
        this.sortMode = sortMode;
    }

    public String getSelectionMode() {
        return selectionMode;
    }

    public void setSelectionMode(String selectionMode) {
        this.selectionMode = selectionMode;
    }

    public void takeSelection() {
        Iterator<Object> iterator = getSelection().getKeys();
        if (iterator.hasNext()) {
            Object key = iterator.next();
            selectedaula = getAulasDataModel().getObjectByKey(key);

            setExercicios(selectedaula.getExercicioList());
        }
    }

    public ExtendedTableDataModel<Aula> getAulasDataModel() {
        if (dataModel == null) {
            dataModel = new ExtendedTableDataModel<Aula>(new DataProvider<Aula>() {

                private static final long serialVersionUID = 5054087821033164847L;

                public Aula getItemByKey(Object key) {
                    for (Aula c : aulas) {
                        if (key.equals(getKey(c))) {
                            return c;
                        }
                    }
                    return null;
                }

                public List<Aula> getItemsByRange(int firstRow, int endRow) {
                    return aulas.subList(firstRow, endRow);
                }

                public Object getKey(Aula item) {
                    return item.hashCode();
                }

                public int getRowCount() {
                    return aulas.size();
                }
            });
        }
        return dataModel;
    }

    public void setAulas(List<Aula> aulas) {
        this.aulas = aulas;
    }

    public Object getTableState() {
        return tableState;
    }

    public void setTableState(Object tableState) {
        this.tableState = tableState;
    }

    public Selection getSelection() {
        return selection;
    }

    public void setSelection(Selection selection) {
        this.selection = selection;
    }

    public Aula getSelectedAulas() {
        return selectedaula;
    }

    public void setSelectedAulas(Aula selectedCapitals) {
        this.selectedaula = selectedCapitals;
    }

    /**
     * @return the exercicios
     */
    public List<Exercicio> getExercicios() {
        return exercicios;
    }

    /**
     * @param exercicios the exercicios to set
     */
    public void setExercicios(List<Exercicio> exercicios) {
        this.exercicios = exercicios;
    }
}
Criado 24 de fevereiro de 2010
Ultima resposta 25 de fev. de 2010
Respostas 2
Participantes 2