1

我们正在将应用程序从 jsf 1.2 迁移到 jsf 2.0,并将 Ajax4JSF (ajax4jsf-1.1.1) 升级到 Richfaces 4.2.2。在我们的旧代码中,有些地方我们使用 org.ajax4jsf.framework.ajax.AjaxActionComponent 以编程方式设置某些组件的 'rerender' 属性。相关代码如下:

public void changeReRender(UIComponent comp){
    AjaxActionComponent commandAjax = (AjaxActionComponent)comp;
    HashSet values = new HashSet();
    values.add("idToBeRerendered");
    commandAjax.setReRender(values);
}

但是在 Richfaces 4 中,AjaxActionComponent 类被删除了。是否有可以用来代替 AjaxActionComponent 的类,或者以其他方式以编程方式更改 UIComponent 的“重新渲染”属性?

4

1 回答 1

1

在 JSF2 中,有一种更通用的方法可以使用PartialViewContext对象以编程方式呈现 id。试试下面的代码片段

      public void changeReRender(UIComponent comp){
            // AjaxActionComponent commandAjax = (AjaxActionComponent)comp;
            // HashSet values = new HashSet();
            // values.add("idToBeRerendered");
            // commandAjax.setReRender(values);
           FacesContext context = FacesContext.getCurrentInstance();
           PartialViewContext partialContext =  context.getPartialViewContext(); //obtain a reference to the PartialViewContext object
           //add the desired id to the list of render ids 
           partialContext.getRenderIds().add("idToBeRerendered");
        }
于 2013-03-18T23:52:31.120 回答