我正在开发一个Primefaces / JSF应用程序。
在bean中,我使用这个脚本将渲染转发到另一个页面,而不是bean的通讯者:
FacesContext context = FacesContext.getCurrentInstance();
context.getApplication().getNavigationHandler().handleNavigation(context, null, "other-page.xhtml");
在other-page.xhtml
上,将不包含某些JS文件,从而影响页面的呈现。
奇怪的是,如果我直接通过浏览器指向other-page.xhtml
页面以正确的方式呈现。
为什么?
怎么可能?
为什么handleNavigation
会导致此问题?我该如何解决?
使用.dispatch
或.redirect
问题没有出现,但出于其他原因我无法使用这两种方法。
这是页面代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Challenge</title>
<h:outputScript library="primefaces" name="jquery/jquery.js" />
</h:head>
<h:body>
<h:form id="loginForm">
<p:growl id="msg" showDetail="true" life="3000" />
<p:panel header="CHALLENGE!!" style="width: 360px;">
<h:panelGrid id="loginPanel" columns="2">
<h:outputText value="Username" />
<p:inputText id="username" value="#{challengeBean.username}" ></p:inputText>
<p:spacer></p:spacer>
<p:message for="username" ></p:message>
<h:outputText value="Password" />
<p:password id="password" value="#{challengeBean.password}" feedback="false"></p:password>
<p:spacer></p:spacer>
<p:message for="password"></p:message>
<p:spacer></p:spacer>
<p:commandButton action="#{challengeBean.submit}" value="submit" update="submit" ajax="false"></p:commandButton>
</h:panelGrid>
</p:panel>
</h:form>
</h:body>
</html>