PF4 数据表单元格编辑未正确显示/呈现



我对数据表的单元格编辑模式有问题。

我每行只有一个单元格需要能够编辑。

我可以编辑它,但更改后的值不会显示。虽然,奇怪的是,当我重新编辑同一个单元格时,会显示更改的值。

onChange调用服务器端 Bean,但旧值和新值都相同。

基于类似于展示的示例,不显示咆哮消息。

这是完整的xhtml代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!-- jsf:pagecode language="java" location="/src/main/java/pagecode/ManageIniFile.java" --><!-- /jsf:pagecode -->
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
   xmlns:ui="http://java.sun.com/jsf/facelets"
   xmlns:f="http://java.sun.com/jsf/core"
   xmlns:h="http://java.sun.com/jsf/html"
   xmlns:p="http://primefaces.org/ui"
   template="theme/ccd.xhtml">
   <ui:define name="body-content">
      <center>
         <h:form styleClass="form" id="form">
            <p:growl id="messages" showDetail="true"/>
            <h:panelGrid columns="1" cellpadding="20" width="50%">
               <h1 class="title ui-widget-header ui-corner-all">Manage Environments</h1>
                  <div class="entry">
                     <p:tabView id="tabView" var="section" value="#{iniFile.sections}">
                        <p:tab id="sectionTab" title="#{section}">
                           <p:dataTable var="entry" value="#{iniFile.getEntries(section)}" editable="true" editMode="cell">
                              <p:ajax event="cellEdit" listener="#{pc_ManageIniFile.onCellEdit}" update=":form:messages" />
                              <p:column headerText="Entry">
                                    <h:outputText value="#{entry.entry}" />
                              </p:column>
                              <p:column headerText="Value">
                                  <p:cellEditor>
                                         <f:facet name="output"><h:outputText value="#{entry.value}" /></f:facet>
                                         <f:facet name="input"><p:inputText value="#{entry.value}" style="width:46%" label="Value" /></f:facet>
                                   </p:cellEditor>
                              </p:column>
                            </p:dataTable>
                        </p:tab>
                     </p:tabView>
                     <h:panelGrid columns="2" width="50%">
                        <h:commandButton type="submit" value="Add Environment" styleClass="loginButton" id="addSection" />
                        <h:commandButton type="submit" value="Save Environment" styleClass="loginButton" id="saveFile" />
                     </h:panelGrid>
                  </div>
            </h:panelGrid>
         </h:form>
      </center>
   </ui:define>
</ui:composition>

具有 onCellEdit() 方法的页面代码 bean 如下所示:

public void onCellEdit(CellEditEvent event)
{
    Object oldValue = event.getOldValue();
    Object newValue = event.getNewValue();
    System.out.println("oldValue=" + oldValue);
    System.out.println("newValue=" + newValue);
    if (newValue != null && !newValue.equals(oldValue))
    {
        FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cell Changed", "Old: " + oldValue + ", New:" + newValue);
        FacesContext.getCurrentInstance().addMessage(null, msg);
    }
}

无论我在编辑什么,oldValue总是等于newValue。 :哭:

比我更了解的人可以提供任何建议吗?

一旦此页面正常工作,该应用程序就完成了。

谢谢

-克里斯

作为后续,我尝试了Mojarra 2.2.6和MyFaces 2.2.2以及PF 4和5.0.RC1。相同的结果。我不认为单元格编辑在标签视图中工作。我已经设法使展示示例正常工作,因此我知道单元格编辑适用于 WAS 8.5.5.1 和 MF 2.2.2。

我能够复制该问题,该问题是由PrimeFaces 4.0 CE中发生验证错误时的javascript问题引起的。我升级到使用 4.0.6 UR2(非官方版本)http://primefaces.github.io/

源:https://github.com/primefaces/primefaces/tree/4.0.6-UR2(从源构建)。

似乎该错误已在 ELITE 版本中修复,并在 PrimeFaces 5 中修复,并放入非官方版本 - 我认为它在 4.0.3 中修复了此问题报告:

https://code.google.com/p/primefaces/issues/detail?id=6312

编辑 *在与您讨论并实际进一步研究之后 - 我们确定这是因为您的条目试图是动态的,但没有作为变量存储在页面范围内,所以它没有什么可引用的。

干杯

获取数据模型是问题的一部分,另一个是EL做更多事情的能力让我误入歧途,在这种情况下调用函数。

原始代码是:

<p:dataTable id="envEntries" var="entry" value="#{iniFile.getEntries(section)}" editable="true" editMode="cell" >

虽然这呈现正确,但它是我所有onCellEdit()问题的原因,因为尽管请求映射是正确的(所以我可以自己捏造它 - 但这不是重点)JSF找不到允许正确的onCellEdit()操作的值。

工作代码是:

<p:dataTable id="envEntries" var="entry" value="#{iniFile.entries}" editable="true" editMode="cell">

因此,我必须以一种允许它与 JSF 一起工作的方式维护数据模型。

完成所有这些操作后,该应用程序将按预期工作。

-克里斯

相关内容

  • 没有找到相关文章

最新更新