当前位置: 首页 > 面试题库 >

成功调用ajax后,数据表不会更新

汪甫
2023-03-14
问题内容

我有一个数据表。表中的每一行都有一个commandButton称为 “删除”
,这是为了从模型和视图中删除该行和执行就地更新。作为页脚,我还有一个commandButton叫做 “删除每一行”

最后一个按钮起作用。我单击它,从模型中删除每一行(即,ArrayList包含元素的元素变为空),dataTablefooter facet在视图中将其重新渲染(或更新)。

另一方面,当我单击某一行上的按钮以将其删除时,它会部分起作用。相应的元素已从模型中删除,但视图未更新。该行仍在中,dataTable并且footer facet未更改。

我的代码中包含以下代码users.xhtml

<f:metadata>
    <f:viewParam name="id" value="#{users.id}" />
    <f:event type="preRenderView" listener="#{users.init}" />
</f:metadata>

...

<h:form id="usersForm">
    <p:outputPanel>    
        <p:dataTable id="userTable" value="#{users.user.friendList}" var="friend">
            <p:column>
                <h:outputText value="#{friend.name}" />
            </p:column>
            <p:column>
                <p:commandButton action="#{users.user.removeFriend(friend)}"
                    ajax="true"
                    update="userTable somethingElse" process="@this"
                    onerror="errorDialog.show();"
                    icon="ui-icon-delete"
                    title="delete user">
                </p:commandButton>
            </p:column>

            <f:facet id="somethingElse" name="footer">  
                    aye: ${users.user.xxx}
            </f:facet>
        </p:dataTable>

    </p:outputPanel>

    <p:commandButton action="#{users.user.removeAllFriends()}" ajax="true"
                update="userTable somethingElse"
                process="@this"
                icon="ui-icon-close"
                value="delete all friends?">
    </p:commandButton>


</h:form>

那么,您认为这里的问题是什么?

我正在使用JSF 2.0和Primefaces 3.0


问题答案:

我认识到此问题是我们当前PF
3.0页面之一。如果您使用它,它将起作用update="@form"。我还没有真正的时间调查真正的原因,所以我可以将其报告给PF人员,因为此问题并未在所有页面中都得到体现。即使在同一张表中,也可以按预期使用其他按钮。

试试看:

<p:commandButton update="@form" ... />

更新 :考虑一下,可能与的存在有关process="@this"



 类似资料:
  • 问题内容: 我正在一个网站上,我们从XML文件中获取信息。效果很好,但是现在我需要对内容进行滑动。为此,我将使用jCarousel声明它们可以通过调用回调函数来处理动态加载的内容。 但是,当我成功调用函数时,无法进行初始的ajax加载。我究竟做错了什么? 我做错什么了吗?还是我必须去一个完全不同的地方?:-) 问题答案: 使用hulabula代替hulabula()或将函数直接传递给ajax选项:

  • 问题内容: 我有这样的事情,它是对脚本的简单调用,该脚本给了我一个值,一个字符串。 但是如果我这样称呼 那么我该如何返回值?下面的代码似乎也不起作用… 问题答案: 从该函数返回数据的唯一方法是进行同步调用而不是异步调用,但这将使浏览器在等待响应时冻结。 您可以传入一个处理结果的回调函数: 这样称呼它:

  • 问题内容: 我想知道为什么$(this)在jQuery ajax调用后不起作用。 我的代码是这样的。 为什么在ajax调用之后,$(this)在这种情况下不起作用?如果我在ajax之前使用它会起作用,但之后没有效果。 问题答案: 在jQuery ajax回调中,“ this”是对ajax请求中使用的选项的引用。它不是对DOM元素的引用。 您需要首先捕获“外部” $(this) :

  • 问题内容: 在文档中,列出了如果触发回调时textStatus可能是的可能值的列表(“超时”,“错误”,“未修改”和“ parsererror”),但未为事件指定任何内容。 除了“成功”之外,还有其他可以传递给回调的值吗?这在任何地方都有记录吗? 问题答案: 并记录在这里。您实际上不必担心将什么textStatus传递给函数,它们都是自动处理的。当/如果调用成功,将调用成功函数,而在其他所有操作的

  • 问题内容: 我的问题与jQuery方法有关。我无法使用成功参数。 这有效: 这不是: 在第一种情况下,我得到一个JavaScript警报窗口,该窗口使我知道调用的函数正在工作。我在第二个代码块中所做的所有更改都放在了。 这样做的目的是验证$ .ajax是否正在运行,以便在$ .ajax成功运行时可以在其中放置一些实际有用的代码。 问题答案: 在第二个示例中,除非您从服务器成功回电,否则将不会发生任

  • 在我的应用程序中,我有一个PF布局,在西部有一个树节点,在中部有一个内容部分,我想在其中使用ajax技术动态加载不同的页面 为了获得它,这个内容部分包含一个ui:include