在我的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.
我错过了什么吗?
答案 0 :(得分: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代码......