Jsf 2 我能';t从一个方面内更新

Jsf 2 我能';t从一个方面内更新,jsf-2,primefaces,Jsf 2,Primefaces,我在JSF2.1中使用PrimeFaces3.3。在下面的代码中,我有一个primeFaces dataTable,其中包含从数据库中提取的数据行,该数据库通过页面左侧的树组件正确激活。dataTable显示和行为正确。我有一个调用“更新”的删除功能,它刷新我的数据表,并在数据库更新后反映我的更改。我的问题是f:facet(id=“header”)。该方面包含一个commandLink,它在我的数据表中创建一个新行。它的工作原理是,我的数据库已正确更新。在此之后,不会刷新dataTable。为了

我在JSF2.1中使用PrimeFaces3.3。在下面的代码中,我有一个primeFaces dataTable,其中包含从数据库中提取的数据行,该数据库通过页面左侧的树组件正确激活。dataTable显示和行为正确。我有一个调用“更新”的删除功能,它刷新我的数据表,并在数据库更新后反映我的更改。我的问题是f:facet(id=“header”)。该方面包含一个commandLink,它在我的数据表中创建一个新行。它的工作原理是,我的数据库已正确更新。在此之后,不会刷新dataTable。为了刷新我的dataTable,我必须单击树组件中的另一个节点(在页面左侧),然后返回到原始树节点,以查看我的dataTable完全更新。我可以在代码中添加什么来动态更新数据表? 不幸的是,我无法添加我在这里尝试过的所有排列-我在这个问题上花了很长时间-您的输入将不胜感激

    <h:form id="formRight" >            
    <p:dataTable var="material" value="#{entityCrudTreeBean.materialList}" id="materials" editable="true" paginator="true" rows="10" sortBy="#{material.name}">
                <p:ajax event="rowEdit" listener="#{entityCrudTreeBean.onEditRow}"/>
                <f:facet id="header" name="header">
                    In-Cell Material Editing
                    <br />
                    <p:commandLink id="create" value="Add new material" action="#{entityCrudTreeBean.createNewMaterial}" update=":formRight"/>
                </f:facet>
                <p:column headerText="Name" style="width:125px">
                    <p:cellEditor>
                        ...
                    </p:cellEditor>
                </p:column>

                <p:column headerText="Options" style="width:10px" >
                    <p:rowEditor />
                    <p:commandLink id="delete" action="#{entityCrudTreeBean.deleteRow(material)}" update=":formRight">
                        <h:graphicImage value="#{resource['icons:Delete-icon.png']}" />
                    </p:commandLink>
                </p:column>
            </p:dataTable>
    </h:form>

单元内材质编辑

...
编辑: 将线路更改为
也不行 编辑: 改为:

单元内材质编辑


也不能解决问题。

我不久前遇到过与您类似的问题

我的工作代码如下所示:

<f:facet name="header">Product List
<p:commandLink id="create" value="Add new product" ajax="true" process="@this" 
action="#{modelBean.save}" update="@form"/>
</f:facet>
产品列表

斯蒂芬,你走对了!
这是以一种更简单的方式解决的:我在托管bean中更新了我的dataTable列表——这是我为删除而做的,但不是为插入而做的。大规模的监督。
此代码适用于:
给我之后的人的提示:Primefaces 3.3有一个关于数据表内更新的已知问题。您需要使用另一个组件包装dataTable,就像表单的布局一样。在包装器上调用update可以工作。
根据primefaces 8月15日的博客,这已在3.4.RC1中修复。但是他们改变了树的组成部分。升级之前,我将等待3.4最终版本。

还没有阅读整个问题(只是主题)。。。尝试将
update=“:formRight”
替换为
update=“@form”
谢谢,丹尼尔。不幸的是,
code:
不起作用。
是否被其他形式包装?不,它是
的一部分。id=“delete”工作正常。只是想知道,尝试将删除链接放在单独的列中,可能在
列中添加其他按钮会有问题。嗨,Stephen,感谢您共享您的代码!我已经在单元格材料编辑中将代码修改为

,但是组件不刷新的问题仍然存在。也许我在这里很傻。我认为问题可能在别处,而不一定在xhtml中。您是否能够发布entityCrudTreeBean和整个xhtml页面?