我已经实现了一个单页设计的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