Tôi có biểu mẫu trong < ui: chèn tên = "nội dung"/> Khi tôi lưu dữ liệu bằng ap: commandButton Tôi có thể cập nhật biểu mẫu và mọi thứ trong < ui: chèn tên = "nội dung"/>. Nhưng tôi gặp khó khăn trong việc tìm hiểu cách cập nhật các thành phần trong số < ui: bao gồm src = "/ sections/menus/topMenu.xhtml"/>Thành phần cập nhật JSF 2 Bên ngoài biểu mẫu và bên ngoài Facelet
Bên trong trình đơn đầu tiên Tôi có một subview cho một bảng điều khiển với các liên kết được hiển thị tùy thuộc vào việc một người có đăng nhập hay không. khi họ đăng nhập, tôi hiển thị tên người dùng của họ. Nếu tôi cập nhật tên người dùng trong phần nội dung của mẫu, tôi muốn cập nhật ui sao cho tên trong menu cũng cập nhật mà không cần làm mới trang. Nhưng đó là một dự phòng tôi cũng có thể sử dụng. Làm mới trang sau khi cập nhật. Nhưng không muốn. Tôi sẽ đăng thêm mã nếu bạn muốn nhưng cố gắng giữ nó ở mức tối thiểu để bắt đầu.
<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>
Dưới đây là p: CommandButton rằng tiết kiệm thông tin người dùng
<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. -->
Dưới đây là ở phần menu của mẫu.
<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>
thế nào về 'làm = "@ dạng: topMenuLoginForm "' và chỉ xoá '' khỏi trang đó? –
Daniel
Sẽ thử một chút sau. Tôi cần phải di chuyển và vừa chọn để làm mới trang khi hoàn thành. Tôi sẽ tái cấu trúc vào cuối tuần này. – BillR