1

我们将基于 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.ajax.requestJSF 2.3 的 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

提前致谢

4

1 回答 1

-1

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

于 2019-09-23T15:42:02.260 回答