您好我正在使用Primefaces 3.5开发JSF。以下是使用menuitems从一个页面切换到另一个页面的代码片段,我正在尝试使用ajax调用来避免在从一个页面移动到另一个页面时页面轻弹。
以下是我的xhtml文件中的代码:
<p:menubar styleClass="brzero borderb">
<p:menuitem value="Student" action="#{studentMB.show('menu')}" ajax="true" />
<p:menuitem value="Users" action="#{usersMB.show('menu')}" ajax="true" />
<p:menuitem value="Departments" action="#{departmentMB.show('menu')}" ajax="true" />
</p:menubar>
使用过的托管bean show动作函数为
public String show(String mode) {
if (mode.equals("menu")){
selectStudent=null;
init();
return "studentList.jsf";
}
else if (mode.equals("list")){
return "welcome.jsf";
}
else {
clone(selectStudent, oldStudent);
return "studentEdit.jsf";
}
}
代码在localhost tomcat服务器上运行正常,但是当部署在通过Internet访问的远程服务器上时,这些调用大约需要15-20秒的时间。我尝试了两个不同的网络服务器来检查这是否是网络/ DNS问题,但问题仍然存在于所有服务器上。
任何想法/帮助可能是什么原因,或者是我做错了什么,我知道ajax必须用于提供部分请求或更新部分,但是什么可以是页面切换的解决方案。 。
答案 0 :(得分:0)
这应该由JSF Navigation完成。见下面的解决方案:
在f aces-config.xml
<navigation-rule>
<from-view-id>/index.xhtml</from-view-id>
<navigation-case>
<from-outcome>menu</from-outcome>
<to-view-id>/studentlist.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
它说,只要结果是“菜单”,只需重定向到studentlist.xhtml.
现在,将您的main.xhtml
更新为
<p:menubar styleClass="brzero borderb">
<p:menuitem value="Student" action="menu"/>
</p:menubar>
如果有人选择了学生菜单,它会自动重定向到studentlist.xhtml.
试试吧!