【问题标题】:Primefaces Ajax calls taking a lot timePrimefaces Ajax 调用需要很多时间
【发布时间】:2013-10-29 05:23:41
【问题描述】:

您好,我正在使用 Primefaces 3.5 开发 JSF。以下是使用 menuitems 从一个页面切换到另一个页面的代码 sn-p,我正在尝试使用 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 服务器上运行良好,但是当部署在通过互联网访问的远程服务器上时,这些调用需要花费大量时间,大约 15-20 秒。我尝试在两三个不同的网络服务器上检查这是否可能是网络/DNS 问题,但问题仍然存在于所有服务器上。

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

【问题讨论】:

  • 页面加载时间取决于您尝试加载的 jsf 文件中的代码。它们是否包含任何不存在的 js/css 引用。
  • 不,我一直在使用一个 css,没有外部 js,正如我所说,这些在 localhost 服务器上运行良好,但是当通过远程服务器访问时,它们会导致问题.. 和我的 jsf pages 包含简单的 primefaces 数据表、命令按钮和一些文本字段.....
  • 你能检查数据库连接/数据检索时间吗?
  • 我做到了,我想说明一件事,当我在 xhtml 文件中将 ajax="true" 更改为 ajax="false" 并返回 "studentList.jsf";返回“studentList.jsf?faces-redirect=true”;在 managedbean 中,它们不需要任何时间,但屏幕会在页面导航之间滑动
  • 你应该使用 JSF Navigation。

标签: ajax jsf time primefaces


【解决方案1】:

这应该由 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.

试试吧!

【讨论】:

  • 感谢 Makky 的解释和您的努力,我会尝试一下,这里只是一个简单的问题,实际上我的托管 bean 函数 (show()) 旨在在重定向之前执行一些操作,例如初始化,调用一些对象克隆逻辑,所以我把它们放到你提到的序列中。请在上面的问题中查看我更新的显示方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
  • 2020-03-19
  • 2018-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多