1

首先,非常感谢大家一直以来的支持。

我有一个与 .xhtml 和 'f:ajax' 相关的问题。

我通过默认折叠的bean变量设置richfaces:collapsiblepanel'expanded'属性,并且在模糊事件中它被扩展。我想在 f:ajax 请求完成后将焦点设置为 UIComponent。为此,我用 javascript 编写了一个函数,并在 f:ajax 的“onevent”中调用它。

但是 onevent 函数在面板打开之前触发,我无法将焦点设置在该可折叠面板中定义的 UIComponent 上。

如何在 ajax 请求完成后 setFocus 或如何触发该功能?

提前致谢。


HTTP错误的POJOMappingFeature?

我已com.sun.jersey.api.json.POJOMappingFeature设置为 true,它适用于 HTTP 200 响应。

但是,当我的应用程序返回错误时,它会显示带有错误标题的 text/html 响应。

即使我像这样创建自定义异常(在 ContainerRequestFilter 中):

throw new WebApplicationException(
    Response.status(Response.Status.FORBIDDEN)
      .type(MediaType.APPLICATION_JSON)
      .build()
);

它仍然显示通用文本/html 403 错误。

4

1 回答 1

3

你的 js 函数应该是这样的

function doTheFocus(data) {
    if (data.status === 'success') {
        //here goes the js code that will set the focus
        //this code will be executed only when the ajax will be done
    }
}

这就是你的f:ajax遗嘱

<f:ajax onevent="doTheFocus" />

如果想在面板打开时调用焦点的js函数可以试试

<rich:collapsiblePanel onswitch="doTheFocus"

或(我不确定...)

<rich:collapsiblePanel onswitch="doTheFocus()"

如果您最终将使用onswitch,您可能需要在doTheFocus函数内部添加一些逻辑来检查面板是否展开...

于 2013-04-23T10:28:43.317 回答