Могу ли я пропустить генерацию html и обновить компонент на этапе ответа на рендеринг JSF?

#jsf

#jsf

Вопрос:

Например, у меня есть commandButton , как показано ниже:

 <p:commandButton
    actionListener="#{logicBean.doSomething}"
    update="component1 component2 component3"
/>
  

Итак, можно ли пропустить повторную генерацию и рендеринг component3 из logicBean.doSomething метода? Это означает, что в возвращенном ответе нет нового HTML для component3 .

Я уже пробовал FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().remove("component3"); , но это не работает.

Комментарии:

1. Каково фактическое содержимое FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds() ? Действительно ли он содержал a String , который точно соответствует "component3" ?

2. Привет @BalusC, да, он вернет список, содержащий «component3».

Ответ №1:

Вы можете выполнить обновление из компонента:

 public void doSomething() {
  /* do the stuff */
  if(haveToDo)
    PrimeFaces.current().ajax().update( "component3" )
    // with older primefaces
    // RequestContext.getCurrentInstance().update( "component3" );
}
  

но вы должны искать полный идентификатор. Это может быть «tab2: myform:component3»

Комментарии:

1. Спасибо за ваш ответ, но, похоже, здесь есть недоразумение. Я хотел бы удалить «component3» с этапа ответа на рендеринг.

2. Да, не записывайте его в html, но добавляйте его из компонента, когда захотите.