我有一个带有单元格编辑器的数据表。当我开始编辑某些行时,表格外面有 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;
}
}
这是我迄今为止所完成的工作:
- 如果我更新面板“pnlBotoes”,按钮会正确更新,但该行会退出编辑模式(再次变得不可编辑)
- 如果我单独更新按钮,则不会更改任何渲染,并且表格会保持其原始状态。
- 来自 Backing Bean 的更新不起作用。
- “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/