2014-09-23 78 views
0

在阅读了很多Web上的例子之后,我找不到正确的方法来刷新jsf页面程序的正确答案。 使用meta http-equiv="refresh" content="20"时,有时候,当网络非常繁忙时,我收到“网页不可用”并且用户失去了工作,但该应用程序仍在工作,当用户按F5键可以继续工作时,但这是不是解决方案。 那么,有没有其他方法可以刷新JSF页面?请注意,我有非常小的服务器资源(我使用树莓派),并不想使用例如Ajax来完成这项工作。 谢谢。什么是刷新JSF页面编程的最佳方法

+0

你想在哪个事件刷新页面? – Smutje 2014-09-23 10:53:02

+0

您在树莓派PI中运行哪个JEE应用程序服务器? – Yamada 2014-09-23 11:45:31

+0

@Smutje - 呃,其实我有一个线程,谁检查我的商店中的新项目(带状态的数据表)。当线程在数据表中找到新项目时,线程必须通知客户端新的更改。用旧的meta标签,我正在刷新网站,我的backin bean检查。现在我必须检查线程并通知我的客户端(用户),他们等待着。 – user3157099 2014-09-23 12:09:09

回答

0

由于您有小型服务器资源,因此ajax方法可能会更好,因为它可能不会刷新整个页面。请注意,您必须正确设计它。

如果这是可以接受的,您可以使用PrimeFaces中的轮询组件。

<p:poll interval="20" listener="#{yourManagedBean.keepAlive}"/> 

这是一个针对ajax处理问题的link

+0

的特定部分感谢山田,我会尝试! – user3157099 2014-09-23 13:14:57

+0

可以举一个Bean的方法示例 - keepAlive() - 我的意思是,在这20个sekonds中调用“#{yourManagedBean.keepAlive}将会做什么。谢谢 – user3157099 2014-09-23 15:57:05

+0

它可以是一个空白的方法..但是如果你想记录用户在同一个屏幕上用了多长时间,你可以使用它来达到这个目的。 – Yamada 2014-09-23 17:50:15

0

您还可以将您的主页设置为errorPage。如果网站不可用,您的网站将被重定向到该网站。在你的web.xml中配置:

<error-page> 
    <exception-type>java.lang.Exception</exception-type> 
    <location>yourHomepage.xhtml</location> 
</error-page> 
+0

感谢Mahttias,这个聪明的解决方案 - 它工作,这意味着我们做了一个无限循环来检查网站和只有浏览器网站的解决方案与ajax是好的,但是当我们没有ajax - 我认为你的想法是最好的,谢谢 – user3157099 2014-09-25 08:56:43

+0

这不是问题的最佳解决方案,但它会帮助我。问题是,并非所有的网站,谁犯了“错误”必须在我的错误页面结束。有没有办法只为该网站的错误页面 - 不是所有?谢谢。 – user3157099 2014-09-25 08:59:58

+0

您可以为不同的例外定义不同的错误页面。我认为使用Primefaces 5还可以使用表达式语言动态地定义errorPage的位置:[link](https://code.google.com/p/primefaces/issues/detail?id=6072&thanks=6072&ts=1377986205 ) – 2014-09-25 09:47:05

相关问题