如何通过ajax(来自菜单)使用jsf2模板进行部分页面渲染(中心内容)
发布时间:2020-12-16 03:07:25 所属栏目:百科 来源:网络整理
导读:我一直在努力让这个工作2周,我试图将这两个帖子中的BalusC信息合并到( link1 link2),以通过左边的菜单实现中心内容区域的部分页面渲染.因此,左侧的链接将通过使用 f:ajax的部分页面呈现来更新中心内容.或者 a4j:ajax通过richfaces -----------------------
我一直在努力让这个工作2周,我试图将这两个帖子中的BalusC信息合并到(
link1
link2),以通过左边的菜单实现中心内容区域的部分页面渲染.因此,左侧的链接将通过使用< f:ajax>的部分页面呈现来更新中心内容.或者< a4j:ajax>通过richfaces
------------------------------------------------------ | include1 link | | | include2 link | center content like include1.xhtml | | include3 link | | ------------------------------------------------------ 我的page-layout.xhtml(include1.xhtml使用的主模板,include2.xhtml,..)看起来像这样. <h:body> <div id="top" class="top"> <ui:insert name="top">page-layout default top content</ui:insert> </div> <div> <div id="left"> <h:form id="navigationFormId"> <f:ajax render=":contentForm"> <h:commandLink value="include1" action="#{navigationBean.setPage('include1')}" /> <p></p> <h:commandLink value="include2" action="#{navigationBean.setPage('include2')}" /> <p></p> <h:commandLink value="include3" action="#{navigationBean.setPage('include3')}" /> <p></p> </f:ajax> </h:form> </div> <div id="content"> <ui:insert name="content"> <h:panelGroup id="contentPanelGroup" layout="block"> <h:form id="contentForm"> <h:panelGroup rendered="#{navigationBean.page == 'include1'}"> <ui:include src="include1.xhtml" /> </h:panelGroup> <h:panelGroup rendered="#{navigationBean.page == 'include2'}"> <ui:include src="include2.xhtml" /> </h:panelGroup> <h:panelGroup rendered="#{navigationBean.page == 'include3'}"> <ui:include src="include3.xhtml" /> </h:panelGroup> </h:form> </h:panelGroup> </ui:insert> </div> </div> </h:body> NavigationBean.java通过带有@Named的CDI定义为ViewScoped bean 公共类NavigationBean实现Serializable { public NavigationBean() {} public String getPage() {return page;} public void setPage(String p) {page = p;} private String page = "include1"; } 包含的页面是include1.xhtml和include2.xhtml等文件,当点击左侧菜单链接时应该加载到中心内容,这里是一个示例include2.xhtml <h:body> <ui:composition template="page-template.xhtml"> <ui:define name="content"> include2 <h:form> form components for include2 </h:form> </ui:define> </ui:composition> </h:body> 我收到FileNotFoundException,虽然堆栈跟踪没有 <h:panelGroup rendered=".....> <ui:include src="..." /> </h:panelGroup> 标签删除异常.我认为这是基于2个BalusC帖子实现这一目标的正确实现,但却无法让它发挥作用.
您收到的错误表明无法找到包含… xhtml页面.文件位于何处?它们应该与page-layout.xhtml文件位于同一目录中?为简化一切,我只测试包含是否有效,yuo可以替换为:
<h:form id="contentForm"> <h:panelGroup rendered="#{navigationBean.page == 'include1'}"> <ui:include src="include1.xhtml" /> </h:panelGroup> <h:panelGroup rendered="#{navigationBean.page == 'include2'}"> <ui:include src="include2.xhtml" /> </h:panelGroup> <h:panelGroup rendered="#{navigationBean.page == 'include3'}"> <ui:include src="include3.xhtml" /> </h:panelGroup> </h:form> 有: <h:form id="contentForm"> <ui:include src="include1.xhtml" /> </h:form> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |