了解jsf.ajax.request

时间:2019-05-18 13:29:06

标签: jsf-2.2 jsf-2.3 butterfaces

我们将基于JSF 2.2的应用程序迁移到JSF 2.3,除了一些较小的问题,我们能够启动并运行所有内容。对于一个视图,我们使用Butterfaces JSF组件,尤其是树组件。使用JSF 2.3,就无法选择一个节点并在另一个容器中显示该节点的详细信息。适当的Ajax请求将节点的ID发送为options.params。在JSF 2.2上可以正常工作,但在JSF 2.3上不能再使用。我们仍在使用Butterfaces 2(由于向下兼容,它应该可以工作),但是即使在Java EE 8的Butterfaces 3展示中,通过Ajax的选择似乎也不起作用。

我查看了JSF 2.3的jsf.ajax.request Javascript方法,对其进行了调试并意识到,由于该参数似乎是错误的格式,因此该参数已被忽略和删除。因此,我用这个小小的愚蠢的代码片段修补了我们应用程序中的方法,以通过ajax请求将参数发送到服务器:

var originalJsfAjaxRequest = jsf.ajax.request;
jsf.ajax.request = function (source, event, options) {
    options.params = {params: options.params};
    originalJsfAjaxRequest.apply(this, [source, event, options]);
}

就这样,它又可以正常工作了。

所以我的问题是,问题应该在哪里。在JSF中忽略这些参数是否是一个问题。还是使用错误的参数使用Butterfaces的问题?使用options.params的正确方法是什么?

预先感谢

1 个答案:

答案 0 :(得分:-1)

我不知道为什么,但是在使用jsf.ajax.request时,JSF 2.3会忽略param属性。出现ButterFaces问题:https://github.com/ButterFaces/ButterFaces/issues/232,并将在本周或下周发布新版本。