Вам нужно обернуть componentToReRender
в:
<h:panelGroup id="componentToReRenderWrapper">
или
<a4j:outputPanel id="componentToReRenderWrapper">
Итак, эффективно у вас будет:
<h:panelGroup id="componentToReRenderWrapper">
<h:selectOneMenu id="componentToReRender" value="#{backingBean.value}" rendered="#{valuesList.rowCount>1 && backingBean.showComponentToReRender}">
<s:selectItems value="#{valuesList}" var="value"/>
</h:selectOneMenu>
</h:panelGroup>
и измените reRender="componentToReRenderWrapper"
, если вы используете panelGroup
, или удалите этот атрибут, если вы используете outputPanel
.
Нашел точное объяснение в RichFaces документах:
Наиболее распространенная проблема с использованием reRender - это указание на компонент, имеющий атрибут «рендеринг». Обратите внимание, что JSF не помечает место в DOM браузера, где должен располагаться результат компонента в случае, если условие «render» возвращает false. Поэтому после того, как компонент будет обработан во время Ajax-запроса, RichFaces доставит обработанный код клиенту, но не обновит страницу, поскольку место для обновления неизвестно. Вам нужно указать на один из родительских компонентов, который не имеет атрибута «рендеринг». В качестве альтернативы вы можете обернуть компонент с layout = "none".