0

嗨,我正在使用 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 显示操作功能如下

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 来服务部分请求或更新部分,但是页面切换的解决方案是什么..

4

1 回答 1

0

这应该由 JSF Navigation 完成。请参阅以下解决方案:

将此添加到您的 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.

试试看 !

于 2013-10-29T06:50:53.087 回答