当前位置: 首页 > 面试题库 >

具有浏览器历史记录/标签的PrimeFaces Ajax导航

公冶泰
2023-03-14
问题内容

我已经实现了一个单页设计的Web应用程序。基本上只加载一个页面,然后使用AJAX更新中心内容。代码如下:

    <h:body>

        <pe:layout id="page" fullPage="true">


            <!-- West -->
            <pe:layoutPane id="west" position="west" >
                <f:facet name="header">Main Menu</f:facet>

                <h:form id="form1">

                    <p:panelMenu id="panelMenu">


                        <p:submenu label="Persons">

                            <p:menuitem value="Person List" update=":centerpanel"
                                actionListener="#{layout.setAll('formPersonList.xhtml', 'Person List')}">                           
                            </p:menuitem>

                        </p:submenu>



                    </p:panelMenu>
                </h:form>
            </pe:layoutPane>

            <!-- Center -->
            <pe:layoutPane id="content" position="center">

                <h:panelGroup id="centerpanel" layout="block">
                    <ui:include id="include" src="#{layout.navigation}" />

                </h:panelGroup>

            </pe:layoutPane>
        </pe:layout>
</h:body>

这基本上是可行的,但我也想启用浏览器导航。例如:http://ticketmonster-
jdf.rhcloud.com/,网址上带有#标签。因此,使用后退/前进按钮,我可以转到等效选项。任何想法如何做到这一点?


问题答案:

我创建了一个博客文章,根据您的问题解释如何使用jQuery BBQ使其工作。

使用jQuery BBQ,您可以跟踪状态,历史记录并允许添加书签,同时通过AJAX和/或DHTML动态修改页面。

首先,我们应该包括jQuery BBQ。

<h:outputScript library="js" name="jquery.ba-bbq.min.js" />

现在考虑我们有菜单(包含所有导航规则)

  <p:submenu label="Meat">
     <p:menuitem outcome="/meat/steak.xhtml" value="Steak" />
     <p:menuitem outcome="/meat/burger.xhtml" value="Burger" />
     <p:menuitem outcome="/meat/chicken.xhtml" value="Chicken" /> 
     <p:menuitem outcome="/meat/kebab.xhtml" value="Kebab" /> 
  </p:submenu>

然后居中的内容

 <pe:layoutPane id="content" position="center">

     <h:panelGroup id="centerpanel" layout="block">
        <ui:include id="include" src="#{mainBean.currentNav}" />
     </h:panelGroup>

  </pe:layoutPane>

包括 反映点击currentNav。

现在在表单中定义一个 remoteCommand

<p:remoteCommand name="updateNav" 
                 actionListener="#{mainBean.updateNav()}"  
                 update=":centerpanel"/>

这个remoteCommand将基于主题标签更新我们的currentNav。

创建您的JS文件或将以下代码包含到文档中

$(document).ready(function() {

   $('.ui-menuitem-link').click(function(event) {
       event.preventDefault();
       var currentNav = $(this).attr('href').
                        substr($(this).attr('href').indexOf("/faces") + 6)
       window.location.hash = '#' + currentNav;

   })

   $(window).bind('hashchange', function(e) {

    var url = $.param.fragment();
    updateNav([{name: 'currentNav', value: url}]); //remoteCommand Call

   })

   $(window).trigger('hashchange');

 });

基本上,首先,我们处理对菜单项的单击,设置窗口的哈希值。

然后使用jQuery BBQ定义窗口的hashchange事件。

ManagedBean

public void updateNav() {
    FacesContext context = FacesContext.getCurrentInstance();
    Map map = context.getExternalContext().getRequestParameterMap();
    currentNav = (String) map.get("currentNav");
}

有关完整的代码,请参阅我为该问题创建的新帖子。

使用jQuery BBQ的Primefaces哈希导航

这个例子也可以在github上找到。

希望能帮助到你。



 类似资料:
  • 本文向大家介绍php浏览历史记录的方法,包括了php浏览历史记录的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php浏览历史记录的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的php程序设计有所帮助。

  • 问题内容: 我在网站上使用ajax。 如果用户输入查询并选择类别,我将使用ajax更新结果页面。我还用哈希值更新了url,该值显示了以分隔的查询和类别。 我想要的是,当按下浏览器的后退按钮时,我希望不重新加载就显示以前的结果。我得到的是该URL具有先前的值,但结果未更新。 问题答案: 您可以使用:“ Yahoo! UI库:浏览器历史记录管理器 ”

  • 问题内容: 我正在从本教程中学习,但始终收到此错误: “ react-router”不包含名为“ browserHistory”的导出。 具有react-router的文件是这样的: 问题答案: 您现在需要从历史记录模块中获取。 请注意,他们最近更改了模块API,因此,如果您使用的是最新版本,则导入会稍有变化:

  • 问题内容: 我正在做一个简单的项目,让我们选择高度安全的网站。我有5个不同的JSP页面。如果我从第一个JSP页面开始,它将重定向到第二个JSP页面,依此类推。同时,它不应该在我的浏览器历史记录中存储这些页面。如何使用JavaScript清除那些浏览历史记录? 问题答案: 您可以尝试使用它来清除历史记录中的最后一个条目,并将其替换为新url的地址吗?从文档历史记录中删除当前文档的URL,这意味着无法

  • 在我的react js应用程序中,我想实现服务器端渲染。因此,我遵循了这个repo。 现在我遇到了这个错误。 不变冲突:浏览器历史记录需要DOM 我以为这是错误。但是我已经导入了router并使用了函数。但我也犯了同样的错误。 app.js(客户端根文件) js(路由文件) js(服务器端文件) 我不知道实际的问题是什么。我搜索了很多google.checked这个qsalso.but没有结果。我

  • 读取播放历史信息 调用地址 http://api.bilibili.cn/history 返回 返回值字段 字段类型 字段说明 results int 返回的记录总数目 list object 返回数据 返回字段 “list” 子项 返回值字段 字段类型 字段说明 aid int 视频编号 typeid int 视频分类ID typename string 视频分类名称 title string