2013-10-29 102 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

相關問題