Почему мои изменения в rich: datatable недоступны в моем доме? - PullRequest
1 голос
/ 22 августа 2011

У меня есть богатый: Datatable с динамическими столбцами ... Пока здесь все в порядке ... Я получаю все данные из базы данных, и мой код показывает все флажки с правильными значениями ... Но когда я изменяю их и нажимаю вКнопка «salvar», значения на другой стороне все те же, что и раньше ... Но если я поставлю inputText вне rich: Datatable, как

<h:inputText value="#{matrix.teste}"/> 

И поместим любое значение, и щелкните в «salvar»значение, которое я набрал до этого, корректно возвращается ко мне домой ...

    <ui:param name="matrix" value="#{inscricaoMatrix}" />
        <a4j:outputPanel id="matrixCredenciamento">
    <a4j:form>
            <rich:dataTable value="#{matrix.rows}" var="row" id="matrix" rendered="#{not empty query.inscricoes}">

            <rich:column label="Nome">
                <f:facet name="header">
                    <h:outputText value="Nome" />
                </f:facet>
                <h:outputText value="#{row.nome}" />
            </rich:column>
            <rich:column label="E-mail">
                <f:facet name="header">
                    <h:outputText value="E-mail" />
                </f:facet>
                <h:outputText value="#{row.email}" />
            </rich:column>
            <rich:column label="Credenciamento">
                <f:facet name="header">
                    <h:outputText value="Credenciamento" />
                </f:facet>
                <h:selectBooleanCheckbox value="#{row.credenciamento}" />
            </rich:column>


                <ui:param name="y" value="#{matrix.rows.indexOf(row)}" />

                <rich:columns value="#{matrix.columns}" var="col" index="x" style="text-align: center; width: 60px;">

                    <ui:param name="index" value="#{y * matrix.columns.size() + x}" />
                    <ui:param name="cell" value="#{matrix.cells[index]}" />

                    <f:facet name="header">
                        <h:outputText value="#{col.horario}" escape="true">
                            <f:convertDateTime  pattern="dd/MM/yyyy HH:mm"/>
                        </h:outputText>
                    </f:facet>
                    <h:selectBooleanCheckbox value="#{cell}" />

                </rich:columns>
            </rich:dataTable>

            <h:inputText value="#{matrix.teste}"/> 

            <h:commandButton id="salvar" value="Salvar" action="#{matrix.update()}" />          

        </a4j:form>
        </a4j:outputPanel>  
</ui:composition>

Кто-то знает, в чем может быть проблема?Я работаю с этой страницей в другую (используя ui: include), чтобы добавить эту страницу ...

1 Ответ

0 голосов
/ 24 августа 2011

Ну

Я искал какое-то решение, но не нашел лучшего пути ... Так что я решил проблему, используя обходной путь ...

<h:selectBooleanCheckbox value="#{cell}" name="presencasHorarios" onclick="setPresencas(#{index},this.checked)"/>

А потом я создал функцию js, подобную этой:

<a4j:jsFunction name="setPresencas" action="#{matrix.addAlteracaoPresenca()}">
            <a4j:actionparam name="param1" assignTo="#{matrix.index}"  />
            <a4j:actionparam name="param2" assignTo="#{matrix.presenca}"  />        
</a4j:jsFunction>

С другой стороны, я создал список ... поэтому я передаю индекс массива и новое значение для этого элемента ... Когда я отправляю его для сохранения или обновления, я читаю этот список, проверяя, какой элемент имеет было изменено и новое значение этого ... Чтобы упростить его, я создал HashMap, передавая индекс и значение ... поэтому, если пользователь изменит значение 1000 раз, значение будет последним. .

...