0

在我的 JSF 应用程序中,我需要在调用应用程序阶段更新 ui 组件。可以做到吗?这是我到目前为止生成的代码:

    public void resetDataScroller(ActionEvent actionEvent) {

    final FacesContext ctx = FacesContext.getCurrentInstance();

    ctx.getViewRoot().invokeOnComponent(ctx, "paginator_and_table:scroll_1", new ContextCallback() {
        public void invokeContextCallback(FacesContext facesContext, UIComponent uiComponent) {

            HtmlDatascroller htmlDatascroller = (HtmlDatascroller) uiComponent;

            htmlDatascroller.setPage(1);
            htmlDatascroller.setValue(1);


        }
    });

}

此动作侦听器查找 dataScroller 组件并将页面和值设置为 1。不幸的是,它似乎根本不起作用,因为呈现的 dataScroller 的页面与 1 不同。

我错过了什么吗?

4

1 回答 1

1

我想你resetDataScroller的方法是由actionListener页面上的命令按钮/链接的属性调用的?

我真的不明白您要做什么...您只需要编写此代码吗?:

public void resetDataScroller(ActionEvent evt) {
    final FacesContext ctx = FacesContext.getCurrentInstance();
    HtmlDatascroller htmlDatascroller = (HtmlDatascroller) ctx.getViewRoot().findComponent("paginator_and_table:scroll_1");
    htmlDatascroller.setPage(1);
    htmlDatascroller.setValue(1);
}

如果您在此阶段更改 HtmlDatascroller 的这些属性,JSF 将在最后一个阶段(Render Response阶段)使用它们来生成您的 HTML 代码...

于 2009-09-22T07:23:55.753 回答