java - Primefaces 数据表 rowEditInit 更新组件失败

标签 java jsf primefaces

我有一个带有单元格编辑器的数据表。当我开始编辑某些行时,表格外面有 2 个按钮可以更改可见性。如下:

        <h:form id="formExigencias">
            <p:panel id="pnlBotoes" columns="3">
                <div class="direita">
                    <p:commandButton value="One Button to Change Visibility"
                        rendered="#{not exigenciaMinimaBean.emAlteracao}"
                        action="#{myBean.someAction()}" />
                    <p:commandButton value="Another Button to Change Visibility"
                        rendered="#{exigenciaMinimaBean.emAlteracao}"
                        action="#{myBean.someOtherAction()}" >
                        <p:confirm header="Confirmação"
                            message="OK?" 
                            icon="ui-icon-alert" />
                    </p:commandButton>
                    <p:spacer height="8px" />
                </div>

                <p:fieldset legend="Resultado da Pesquisa">
                    <p:dataTable id="tabelaExigencias"
                        emptyMessage="Nenhuma exigência cadastrada."
                        value="#{exigenciaMinimaBean.exigencias}" var="exigencia"
                        paginator="true" rows="10" paginatorPosition="bottom"
                        rowsPerPageTemplate="5,10,15"
                        paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                        rowKey="#{exigencia.id}"
                        selection="#{exigenciaMinimaBean.exigenciaEdicao}"
                        selectionMode="single" editable="true">

                        <p:ajax event="rowEditInit"
                            listener="#{exigenciaMinimaBean.rowEditInit}" 
                            process="@this"
                            update=":formExigencias:pnlBotoes"/>

                        <!-- declarations supressed to optimize reading -->
                    </p:dataTable>
                </p:fieldset>
            </p:panel>
            <p:spacer height="20px" />              
        </h:form>


@ManagedBean
@ViewScoped
public class ExigenciaMinimaBean {
    public void rowEditInit(RowEditEvent evento) {
        emAlteracao = true;
    }
}

这是我迄今为止所完成的工作:

  1. 如果我更新面板“pnlBotoes”,按钮会正确更新,但该行会退出编辑模式(再次变得不可编辑)
  2. 如果我单独更新按钮,则不会更改任何渲染,并且表格会保持其原始状态。
  3. 来自 Backing Bean 的更新不起作用。
  4. “process="@this"”的存在不会改变任何内容

我做错了什么? :-(

提前致谢。

最佳答案

您正在尝试更新包含数据表的面板,因此 editMode 正在重置为其“默认”状态。

我建议您更换div其中包含 <p:commandButton><h:panelGroup layout="block" id="aDiv">并在 rowEditInit 之后更新该组件事件(即:update=":formExigencias:pnlBotoes:aDiv")

关于java - Primefaces 数据表 rowEditInit 更新组件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27152076/

相关文章:

jsf - h :outputLabel inside ui:repeat 的属性存在问题

jsf-2 - 什么是进程和更新以及它在 primefaces 中如何工作

jsf-2 - 如果在 Primefaces SelectOneMenu 中未选择任何内容,如何禁用提交按钮

java - 检测有向无环图中的循环引用

java - 搜索多树数据结构的最有效方法

JSF - 在单个 bean 中在 @ManagedProperty 上设置多个值

java - 如何设置 <p :selectOneMenu 的默认值

java - 如何在屏幕上显示标记

java - java中如何仅在动画完成后调用方法?

jsf - 如何将参数传递给 h :commandLink after action is executed?