将请求转发到 p:outputpanel 的页面使其永远加载
forwarding request to a page with p:outputpanel make it load forever
我正在使用 primefaces 6.0 在 wildfly 10 上开发网络应用程序,我的问题是:
重定向到包含 primefaces 输出面板的页面会导致输出面板永远加载:/
通过重定向我的意思是像这样的代码:
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/aboutUs.xhtml");
dispatcher.forward(request, response);
我将不胜感激 :D
经过一些测试,我明白了:
-假设我已经向我的 servlet 发送了一个请求,该请求被转发并返回了一个漂亮的网页
-现在我的输出面板小部件中的 javascript 代码尝试加载其内容,因此它发送另一个请求
-这次 servlet 我只是决定不转发到同一页面,或者我根本不转发或者...
问题是我没有写这个 servlet(在我的例子中它是 faces servlet,而且因为即使是 faces-config.xml 也不会成功,所以它很无助)
我所做的是使用参数来 enable/disable 输出面板延迟加载,如下所示:
<p:outputPanel deferred="#{request.getParameter('lazy') == 'off'? false : true}">
然后我在我的自动转发页面中使用了这个:
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.xhtml?lazy=off</form-login-page>
<form-error-page>/login.xhtml?lazy=off</form-error-page>
</form-login-config>
</login-config>
剩下的就是确保比任何 ajax 调用这些页面也应该包括这个参数所以我在我的 "change language" menuitem
中添加了这个参数
<p:menuitem ...>
<f:param name="lazy" value="#{request.getParameter('lazy')}" />
</p:menuitem>
现在这些页面加载时没有延迟加载,而是永远加载,这不是一个完美的解决方案,但总比没有好 :D
这是我迄今为止最好的主意:/
我正在使用 primefaces 6.0 在 wildfly 10 上开发网络应用程序,我的问题是:
重定向到包含 primefaces 输出面板的页面会导致输出面板永远加载:/ 通过重定向我的意思是像这样的代码:
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/aboutUs.xhtml");
dispatcher.forward(request, response);
我将不胜感激 :D
经过一些测试,我明白了: -假设我已经向我的 servlet 发送了一个请求,该请求被转发并返回了一个漂亮的网页
-现在我的输出面板小部件中的 javascript 代码尝试加载其内容,因此它发送另一个请求
-这次 servlet 我只是决定不转发到同一页面,或者我根本不转发或者...
问题是我没有写这个 servlet(在我的例子中它是 faces servlet,而且因为即使是 faces-config.xml 也不会成功,所以它很无助)
我所做的是使用参数来 enable/disable 输出面板延迟加载,如下所示:
<p:outputPanel deferred="#{request.getParameter('lazy') == 'off'? false : true}">
然后我在我的自动转发页面中使用了这个:
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.xhtml?lazy=off</form-login-page>
<form-error-page>/login.xhtml?lazy=off</form-error-page>
</form-login-config>
</login-config>
剩下的就是确保比任何 ajax 调用这些页面也应该包括这个参数所以我在我的 "change language" menuitem
中添加了这个参数<p:menuitem ...>
<f:param name="lazy" value="#{request.getParameter('lazy')}" />
</p:menuitem>
现在这些页面加载时没有延迟加载,而是永远加载,这不是一个完美的解决方案,但总比没有好 :D
这是我迄今为止最好的主意:/