Ответ 1
Невозможно повторно обработать (обновить) компонент ajax, если сам компонент не будет отображаться на первом месте. Компонент должен всегда отображаться перед тем, как ajax может повторно отобразить его. Ajax использует JavaScript document.getElementById()
для поиска компонента, который необходимо обновить. Но если JSF не отобразил компонент на первом месте, тогда JavaScript не сможет найти что-либо для обновления.
Решение состоит в том, чтобы просто ссылаться на родительский компонент, который всегда отображается.
<h:form>
...
<h:commandButton ...>
<f:ajax ... render=":text" />
</h:commandButton>
</h:form>
<h:panelGroup id="text">
<h:outputText ... rendered="#{not empty user}" />
</h:panelGroup>