2013-10-29 132 views
0

嗨我正在使用Primefaces 3.5的JSF。以下是使用菜单项从一个页面切换到另一个页面的代码片段,我试图使用Ajax调用来避免在从一个页面移动到另一个页面时发生页面轻拂。Primefaces 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"; 
    }     
} 

代码正在本地主机Tomcat服务器上很好,但是当部署在远程服务器通过互联网访问,这些通话需要大约15-20秒的时间。我尝试了两台三台不同的网络服务器来检查这可能是网络/ DNS问题,但问题仍然存在于所有服务器上。

任何想法/帮助可能是什么原因,或者他们的任何我做错了,我知道ajax必须用于服务部分请求或更新部分,但什么可以是页面切换的解决方案..

+0

页面加载时间取决于您尝试加载的jsf文件中包含的代码。它们是否包含任何不存在的js/css引用。 –

+0

不,我一直只使用一个CSS,没有外部js,正如我所说,这些在localhost服务器上工作得很好,但是当通过远程服务器访问时,它们导致问题..我的jsf页面包含简单的primefaces数据表,commandbuttons和一些文本字段..... – Nitin

+0

你可以检查数据库连接/数据检索时间吗? –

回答

0

这应该由JSF导航完成。请参阅下面的解决方案:

在˚Faces-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.

试试吧!

+0

感谢Makky的解释和你的努力,我会尝试它,这里只是一个简单的问题,实际上我的托管bean函数(show())是为了在重定向之前执行一些操作,例如初始化,调用一些对象克隆逻辑,那么我将它们放入你提到的序列中。请在 – Nitin

+0

以上的问题中查看我更新的show方法,您可以将它们放入managedbean的构造函数中。 – Makky

相关问题