1

我的 jsf 页面中有一个自定义的 javascript Ajax 调用。我在过滤器中捕获并处理 XMLHttpRequest 的查询字符串。过滤器将记录添加到模型中的表中。现在,我希望 jsf 页面在不刷新整个页面的情况下反映其中一个组件(Primefaces 数据表)中的更新模型。

我想我需要的是一个自定义的 xmlHttpResponse ......

谁能告诉我该怎么做?我害怕它可能会很复杂,但我别无选择,只能使用自定义 javascript ......

4

1 回答 1

5

PrimeFaces<p:remoteCommand>就是为此目的而设计的。

这是您的特定案例的基本启动示例:

<h:form>
    <p:remoteCommand name="updateTable" action="#{bean.updateTable}" 
        process="@this" update="table" />
    ...
    <p:dataTable id="table">...</p:dataTable>
</h:form>

它生成一个 JS 函数updateTable(),该函数将调用该#{bean.updateTable}方法并使用(相对)客户端 ID 更新组件table。您只需updateTable()在 JavaScript 上下文中调用该函数。

updateTable();

如有必要,您甚至可以传递请求参数,它必须作为 JS 对象发送:

updateTable({ name1: "value1", name2: "value2 });

无需摆弄自制的 ajax 请求并保持 JSF 状态同步。

于 2012-12-16T22:31:48.260 回答