如果从同一数据表的记录触发 Ajax 刷新数据表失败?



我想实现这个:

在我的数据表

内,在其中一个单元格中,我可以触发一个操作,该操作可以通过单击命令链接来刷新数据表本身。

但我的经历是:

触发操作后,一切都按预期工作,但只缺少一件事,即它不会刷新数据表。


我的摘录是这样的链接(是的,我知道使用 @all 不是一个好主意,但这是为了测试目的):

<p:column>
    <p:commandLink value="Undo"
        process="@all"
        action="#{tInputBean.undoRemoveRecord(rpbDetail)}" 
        update="@all"
        rendered="#{tInputBean.isRemoveRecord(rpbDetail)}"
    />
</p:column>

我进一步测试,在数据表的标题方面外放置一个按钮,它只刷新网格:

<p:commandButton value="Refresh Data" update="gridRPBDetails" />

所以步骤变成了:

  1. 单击链接后,网格不会自行刷新。
  2. 单击刷新按钮实际上刷新了网格,链接消失了(由于渲染属性),这意味着,我的 JSF Bean 中的所有阶段和状态都已经正确。只有刷新视图阶段失败。

我想实现的很简单:单击链接,链接本身刷新并消失(从渲染属性中)

在我看来,从我的测试来看,结论是:任何可以触发操作并刷新包含该记录的网格的记录都将在刷新阶段失败。

有什么想法可以解决这个问题吗?


无论如何,我想在点击Firebug的"撤消"链接后分享响应:

<?xml version='1.0' encoding='UTF-8'?>
<partial-response><changes><update id="javax.faces.ViewState"><![CDATA[673421645734309925:-3805206326573204566]]></update></changes><extension primefacesCallbackParam="validationFailed">{"validationFailed":false}</extension></partial-response>

我使用的是雄猫 7,这些是我的依赖项:

<dependency>
    <groupId>org.primefaces</groupId>
    <artifactId>primefaces</artifactId>
    <version>2.2.1</version>
</dependency>
<dependency>
    <groupId>com.sun.faces</groupId>
    <artifactId>jsf-api</artifactId>
    <version>2.0.4-b09</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.sun.faces</groupId>
    <artifactId>jsf-impl</artifactId>
    <version>2.0.4-b09</version>
    <scope>compile</scope>
</dependency>

更新:


意识到这篇文章没有一个简单的例子,并且很难测试和解释,因此,我做了一个简单的例子,我在这里发布。

如果版主认为应该删除此帖子并这样做,那也没关系。

谢谢!

你在哪里更新记录?仅通过键入过程和更新是行不通的。除此之外,不要使用@all。如果数据表已在表单中,则@all情况下不会更新。使用@this。

我想帮助你,但我不知道你想在后端做什么。为了刷新数据表,您需要有一个处理刷新的操作侦听器或操作属性。那么另一个问题,你的豆子的范围是什么?如果其会话作用域,则需要将其更改为查看作用域。

把你的代码放在这里,然后我可以更好地解释它。

最新更新