Adicionar em outra uma lista os dados submetidos do form

0 respostas
A

Ola Pessoal

Seguinte, eu tenho uma tabela, que tem um botão pra adicionar linha e outro botao pra editar as linhas que jah estão na tabela…
e gostaria de na hora que clico em salvar alterações…adicionar em duas lista …uma para dados criados e outra para os dados que sao update
mas nao estou conseguindo…nao sei o que fazer…
segue abaixo o codigo da view:

<ui:composition template="./template.xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:rich="http://richfaces.org/rich"
                xmlns:a4j="http://richfaces.org/a4j"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:c="http://java.sun.com/jsp/jstl/core">
    <ui:define name="content">
        <a4j:region>
            <ui:insert name="aliveBean">TODO Bean to keep alive</ui:insert>
            <rich:panel>
                <div id="panelFade" >
                    <h:outputText styleClass="headerCreate"
                                  value="#{rsc.register} #{p}" />
                </div>
                <div id="componentCrud">
                    <hr/>
                    <a4j:form id="formComponent">
                        <h:panelGrid columns="3"
                                     style="position: relative;
                                     margin: auto;
                                     padding-top: 15px;">
                            <h:outputLabel for="txtDescription"
                                           value="#{rsc.description}:" />
                            <h:inputText id="txtDescription"
                                         onfocus="showHideComponent('cmbCRUDHint')"
                                         size="60"
                                         value="#{controller.descriptionSearch}"/>
                            <a4j:commandButton action="#{controller.actSearch}"
                                               ajaxSingle="false"
                                               immediate="true"
                                               onclick="Richfaces.showModalPanel('panelLoading')"
                                               oncomplete="Richfaces.hideModalPanel('panelLoading')"
                                               reRender="resultTable"
                                               type="submit"
                                               value="#{rsc.search}"/>
                            <div class="clear"/>

                            <div class="clear"/>
                        </h:panelGrid>
                        <div id="cmbCRUDHint"
                             class="hint">#{rsc.toCheckDataRegisteredUseSearchWithEmptyDescription}

                        </div>
                        <rich:messages ajaxRendered="true"
                                       globalOnly="true"
                                       styleClass="success" />
                        <rich:message ajaxRendered="true"
                                      for="txtDescriptionSearch"
                                      styleClass="error"/>
                        <rich:panel>
                            <f:facet name="header" id="headertablecrud">
                                <h:panelGrid columns="3">
                                    <a4j:commandLink action="#{controller.actAddRow}"
                                                     ajaxSingle="false"
                                                     immediate="true"
                                                     styleClass="addnew"
                                                     reRender="panelField"
                                                     value="#{rsc.add} #{p}"
                                                     type="submit"/>
                                    <a4j:commandLink action="#{controller.actSaveUpdate}"
                                                     ajaxSingle="false"
                                                     immediate="true"
                                                     styleClass="saveadd"
                                                     value="#{rsc.saveUpdate}"
                                                     type="submit"/>
                                </h:panelGrid>
                            </f:facet>
                            <hr/>
                            <rich:dataTable id="resultTable"
                                            columnClasses="plainColumn, editColumn"
                                            rowClasses="lineB, lineA"
                                            headerClass="plainTableHeader"
                                            reRender="ds"
                                            rows="10"
                                            value="#{controller.resultData}"
                                            var="row"
                                            style="width: 100%;">
                                <rich:column>
                                    <f:facet name="header" >
                                        <h:outputText value="Descrição" />
                                    </f:facet>
                                    <h:panelGroup layout="block"
                                                  id="panelField">
                                        <h:outputText converter="plainObjectConverter"
                                                      rendered="#{row.readOnly}"
                                                      value="#{row.persistent}"/>
                                        <h:inputText  id="rowInput"
                                                      rendered="#{row.updating or row.creating}"
                                                      value="#{row.persistent[editField]}"
                                                      style="width: 50%;"
                                                      size="60"
                                                      required="true">
                                            <rich:messages ajaxRendered="true"
                                                       for="rowInput"
                                                       styleClass="error"/>
                                            </h:inputText>
                                        
                                    </h:panelGroup>
                                </rich:column>
                                <rich:column>
                                    <a4j:commandLink action="#{controller.actSelectPersistent}"
                                                     ajaxSingle="true"
                                                     immediate="true"
                                                     rendered="#{row.readOnly}"
                                                     reRender="panelField"
                                                     styleClass="edit"
                                                     title="#{rsc.clickToEdit}"
                                                     value=""/>
                                    <a4j:commandLink action="#{controller.actRemoveRow}"
                                                     ajaxSingle="true"
                                                     rendered="#{row.creating}"
                                                     immediate="true"
                                                     reRender="panelField"
                                                     styleClass="cancel"
                                                     title="#{rsc.clickToCancel}"
                                                     value=""/>
                                </rich:column>

                            </rich:dataTable>
                            <hr/>

                        </rich:panel>
                        <rich:datascroller for="resultTable"
                                           id="ds"
                                           onpagechange="Richfaces.showModalPanel('panelLoading')"
                                           oncomplete="Richfaces.hideModalPanel('panelLoading')"
                                           renderIfSinglePage="true"
                                           align="left"/>
                    </a4j:form>
                </div>
                <rich:messages ajaxRendered="true"
                               globalOnly="true"
                               styleClass="error"/>
                <rich:messages ajaxRendered="true"
                               globalOnly="true"
                               styleClass="success"/>
            </rich:panel>
        </a4j:region>
    </ui:define>
</ui:composition>

e o bean

public abstract class Controller<T extends Persistent>
        implements Serializable {

    private String descriptionSearch;
    private DataModel resultDataModel;
    private List<PersistentRowWrapper<T>> persistentRowWrapperList;
    private List<PersistentRowWrapper<T>> persistentListTemporaryCreat = new ArrayList<PersistentRowWrapper<T>>();
    private List<PersistentRowWrapper<T>> persistentListTemporaryUpdate = new ArrayList<PersistentRowWrapper<T>>();

    public AbstractPersistentController() {
        this.persistentRowWrapperList = new ArrayList<PersistentRowWrapper<T>>();
    }

    protected abstract List<T> getResultList();

    protected abstract <S extends GenericService> S getService();

    protected abstract T createNewPersistent();

    public String getDescriptionSearch() {
        return descriptionSearch;
    }

    public void setDescriptionSearch(String descriptionSearch) {
        this.descriptionSearch = descriptionSearch;
    }

    public DataModel getResultData() {
        return resultDataModel;
    }

    public void actSaveUpdate() {
        for (PersistentRowWrapper<T> persistentRowWrapper : persistentRowWrapperList)
            System.out.println(persistentRowWrapper.getPersistent());

        /*try {

            if (persistentListTemporaryCreat != null) {
                for (PersistentRowWrapper persistentRowWrapper : persistentListTemporaryCreat) {
                    System.out.println("Entrou em actSaveUpDate no save");
                    getService().validate(persistentRowWrapper.getPersistent());
                    getService().save(persistentRowWrapper.getPersistent());
                    FacesUtils.getInstance().addMessage(ResourceUtils.getKeyValue("registeredSuccessfully", FacesUtils.getInstance().getCurrentHttpRequestLocale()));

                }
            }
            if (persistentListTemporaryUpdate != null) {
                for (PersistentRowWrapper persistentRowWrapper : persistentListTemporaryUpdate) {
                    getService().validate(persistentRowWrapper.getPersistent());
                    getService().merge(persistentRowWrapper.getPersistent());
                    FacesUtils.getInstance().addMessage(ResourceUtils.getKeyValue("changedSuccessfully", FacesUtils.getInstance().getCurrentHttpRequestLocale()));

                }

            }
        } catch (ValidationException ex) {
            FacesUtils.getInstance().addMessage(ResourceUtils.getKeyValue(ex.getMessageKey(), FacesUtils.getInstance().getCurrentHttpRequestLocale()));
        }
         *
         */
    }

    public void actSearch() {
        List<T> list = getResultList();
        if (list != null
                && !list.isEmpty()) {
            persistentRowWrapperList.clear();
            for (T persistent : list) {
                persistentRowWrapperList.add(new PersistentRowWrapper<T>(persistent, true));
            }
            resultDataModel = new ListDataModel(persistentRowWrapperList);
        } else {
            resultDataModel = null;
            FacesUtils.getInstance().addMessage(ResourceUtils.getKeyValue("nothingWasFound", FacesUtils.getInstance().getCurrentHttpRequestLocale()));
        }
    }

    public void actAddRow() {
        persistentRowWrapperList.add(0, new PersistentRowWrapper<T>(createNewPersistent(), false));
        resultDataModel = new ListDataModel(persistentRowWrapperList);
    }

    public void actRemoveRow() {
        PersistentRowWrapper<T> persistentRowWrapper = (PersistentRowWrapper<T>) resultDataModel.getRowData();
        for (PersistentRowWrapper<T> rowWrapper : persistentListTemporaryUpdate) {
            if(persistentRowWrapper.getPersistent().getId().equals(rowWrapper.getPersistent().getId()))
                persistentListTemporaryUpdate.remove(rowWrapper);
        }
    }

    public void actSelectPersistent() {
        PersistentRowWrapper<T> persistentRowWrapper = (PersistentRowWrapper<T>) resultDataModel.getRowData();
        persistentRowWrapper.setUpdating();
        persistentListTemporaryUpdate.add(persistentRowWrapper);
    }


}

Entao pessoal…eu fiz um teste ali no metodo actSaveUpdate pra mostrar a lista…mas nao grava na lista…se eu adicionar um linha ele adiciona a linha normalmente…mas nao grava na lista…mostra null quando dou um system.

Agradeço pela Ajuda!

Criado 8 de agosto de 2010
Respostas 0
Participantes 1