2016-09-26 52 views
-1

使用Primefaces 6.0/jsf 2.2.6。Primefaces 6.0 xhtml頁面顯示從另一個頁面重定向空白

我有一個頁面(安全),它包括一個bean支持的另一個頁面(不安全,有2個入口點到不安全的頁面,因此這個設置),它使用一個模板,

所以第一安全頁面有:

<h:body> 
     <ui:include src="../unsecure/eacCalculator.xhtml" /> 
</h:body> 

第二頁:

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:p="http://primefaces.org/ui" 
    xmlns:pe="http://primefaces.org/ui/extensions" 
    xmlns:f="http://xmlns.jcp.org/jsf/core"> 

<h:head> 
    <script type="text/javascript"> 
     $(document).on("keypress", ":input:not(text,textarea)", function (event) { 
      if (event.keyCode == 13) { 
       event.preventDefault(); 
      } 
     }); 

    </script> 
</h:head> 
<ui:composition template="#{eacCalculatorBean.template}" > 
    <f:event listener="#{eacCalculatorBean.getScreenStartupData()}" type="preRenderComponent" /> 
    <ui:define name="page-content"> 



....... 

如果我登錄後直接點擊頁面的URL從一個動態內置菜單項,然後頁面加載正常。但是,如果我先到另一個頁面,然後從那裏再次點擊上述頁面的菜單項,它會加載一個空白頁面。如果我重新點擊菜單項,頁面會重新渲染。

有什麼可能的原因可能導致在第一次加載另一個頁面後不加載?

+0

嗨,歡迎來到stackoverflow。請創建一個[mcve]。 – Kukeltje

+0

它太複雜了,因爲菜單項是動態構建的 –

+0

對不起,但是如果你不能創建[mcve](是重現問題所需的動態菜單嗎?難道它只是被遺漏了嗎?)我懷疑任何人都可以幫你。 javascript是例如我認爲這肯定是不相關的 – Kukeltje

回答

0

您使用包含文件的相對路徑。如果您的第二頁位於與登錄後頁面不同的路徑內,則可能無法解析文件位置。

  • 看看作爲AS日誌文件,如果文件位置不能得到解決
  • 嘗試內模板的絕對路徑,以排除這個問題

    <ui:include src="/path/to/unsecure/eacCalculator.xhtml" />

0

好了很多調試完畢後我其實發現了這個問題。 「使用哪個模板」被推遲到創建bean的事實導致xhtml中的CustomMenu僅在Bean實例化後觸發。簡而言之,就是使用之前的屏幕設置,這會導致css將數據向右滑動(這會使屏幕變爲空白)。

相關問題