我在jsf页面中有一个自定义的javascript Ajax调用。我在过滤器中捕获并处理XMLHttpRequest的查询字符串。过滤器将记录添加到模型中的表中。 现在我希望没有完整页面刷新的jsf页面在其中一个组件(Primefaces数据表)中反映更新的模型。
我想我需要的是自定义的xmlHttpResponse ...
谁能告诉我怎么做?我很害怕它可能很复杂,但我别无选择,只能使用自定义的javascript ...
答案 0 :(得分: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
更新组件。您只需在JavaScript上下文中调用函数updateTable()
。
updateTable();
如果需要,您甚至可以传递请求参数,它必须作为JS对象发送:
updateTable({ name1: "value1", name2: "value2 });
无需摆弄自制的ajax请求并保持JSF状态同步。