2013-03-18 3 views
1

Мы переносим приложение из jsf 1.2 в jsf 2.0 и обновляем Ajax4JSF (ajax4jsf-1.1.1) до Richfaces 4.2.2. В нашем старом коде есть места, где мы используем org.ajax4jsf.framework.ajax.AjaxActionComponent, чтобы программно установить атрибут «rerender» некоторых компонентов. Соответствующий код выглядит следующим образом:Richfaces 4 - заменить AjaxActionComponent

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

Но в RichFaces 4 класс AjaxActionComponent был удален. Существует ли класс, который можно использовать вместо AjaxActionComponent, или другой способ программно изменить атрибут 'rerender' UIComponent?

ответ

1

В JSF2 существует более общий подход к программному рендерингу идентификаторов с использованием объекта PartialViewContext. Попробуйте следующий фрагмент

 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"); 
     } 
+0

Таким образом, я не должен связывать идентификаторы, которые будут отображены с UIComponent, но с PartialViewContext вместо этого? – Rony

+0

@Rony точно, благодаря поддержке JSF2 с полузадачей ajax; Обработка Ajax больше не зависит от компонента (по крайней мере, на стороне сервера) – kolossus

 Смежные вопросы

  • Нет связанных вопросов^_^