Tengo un formulario en el < ui: insertar nombre = "contenido"/> Cuando guardo los datos con ap: commandButton puedo actualizar el formulario y las cosas dentro del < ui: insertar nombre = "contenido"/>. Pero estoy teniendo problemas para averiguar cómo actualizar componentes en el < ui: include src = "/ secciones/menús/topMenu.xhtml"/>Componente de actualización JSF 2 fuera del formulario y fuera de Facelet
Dentro del Menú superior Tengo una vista secundaria para un panel con los enlaces que consiguen rindió dependiendo de si una persona está conectada o no. cuando están conectados, muestro su nombre de usuario. Si actualizo el nombre de usuario en la parte de contenido de la plantilla, quiero actualizar la interfaz de usuario para que el nombre en el menú también se actualice sin actualizar la página. Pero esa es una alternativa que puedo usar también. Actualiza la página después de la actualización. Pero preferiría no hacerlo. Publicaré más código si lo desea, pero trato de mantenerlo al mínimo para comenzar.
<h:body>
<div id="wrap">
<div title="Container">
<ui:include src="/sections/base/header.xhtml"/>
</div><!-- End of Banner -->
<div id="baseTemplateTopMenu" title="Menu">
<ui:include src="/sections/menus/topMenu.xhtml"/>
</div><!-- End of Menu -->
<div id="sbt_contentbody">
<div title="Left Column">
<ui:include src="/sections/base/leftsidebar.xhtml"/>
</div> <!-- End of Left Column -->
<div title="Content Column">
<ui:insert name="content" />
</div><!-- End of Centre Column -->
<div title="Right Column">
<ui:include src="/sections/base/rightsidebar.xhtml"/>
</div><!-- End of Right Column -->
</div>
<div id="footer" title="Footer" class ="container">
<ui:include src="/sections/base/footer.xhtml"/>
</div><!-- End of Footer -->
</div><!-- End of Container -->
</h:body>
a continuación es el t: commandButton que guarda la información del usuario
<p:commandButton id="id_SubmitUserInfoPrefs"
value="Update"
action="#{userPreferences.updateUserInfo()}" styleClass="bottom_margin_2em top_margin_2em">
<f:ajax execute="@form" render="@form :topMenuLoginView:topMenuLoginForm" />
<!-- tried adding 'update=":"topMenuLoginView:topMenuLoginForm"' as well. -->
A continuación se muestra en la parte del menú de la plantilla.
<f:subview id="topMenuLoginView">
<h:form id="topMenuLoginForm" prependId="false">
<ul>
<h:panelGroup id="loginPanel" rendered="#{!user.loggedIn}">
<li><h:outputLink value="javascript:void(0)" onclick="topMenuLoginDialog.show()"
title="login" styleClass="loginpanelclass">Log In</h:outputLink></li>
<li><h:link value="Register" outcome="/registration/register.xhtml" /></li>
</h:panelGroup>
<h:panelGroup id="logoutPanel" rendered="#{user.loggedIn}">
<li><h:link value="#{user.nickname}" outcome="#{navigationprops.userprefs}" /> </li>
<li><p:commandLink action="#{webAuthenticationBean.logout}"
update=":topMenuLoginView:topMenuLoginForm">
Logout
</p:commandLink>
</li>
</h:panelGroup>
</ul>
</h:form>
</f:subview>
¿qué hay de 'render =" forma @: topMenuLoginForm "' y simplemente elimine '' f: subview id = "topMenuLoginView"> 'desde esa página? – Daniel
Lo intentaré un poco más tarde. Necesito ponerme en movimiento y acabo de elegir actualizar la página al finalizar. Voy a refactorizar más tarde esta semana. – BillR