将请求转发到 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

这是我迄今为止最好的主意:/