我们正在将一个应用程序从jsf 1.2迁移到jsf 2.0,并将Ajax4JSF (Ajax4JSF -1.1.1)升级到Richfaces 4.2.2。在我们的旧代码中,有一些地方我们使用org.ajax4jsf.framework.ajax.AjaxActionComponent以编程方式设置一些组件的"renderer"属性。相关代码如下:
public void changeReRender(UIComponent comp){
AjaxActionComponent commandAjax = (AjaxActionComponent)comp;
HashSet values = new HashSet();
values.add("idToBeRerendered");
commandAjax.setReRender(values);
}
但是在Richfaces 4中,AjaxActionComponent类被删除了。是否有一个类,可以用来代替AjaxActionComponent,或另一种方式来编程改变uiccomponent的"渲染"属性? 在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");
}