2012-12-14 55 views
1

我們正在從JSF 1.x轉向JSF 2,我非常期待使用許多新功能。我一直在尋找,似乎無法找到一個原因和/或解決方案,我遇到了顯式導航問題,其中h:commandButton位於dataTable中。如下圖所示,「工作」鏈接正確地重定向到「testPage.xhtml」,但「不工作」鏈接不能正確重定向到「testPage.xhtml」。它只是帶你回到你目前所在的頁面。這些頁面存在於同一個目錄中。JSF 2顯式導航數據表

如果這不起作用,那就好了,但我很好奇,如果有人遇到這個問題,並且如果有解決方案。

項目信息:

  1. JSF 2.x的
  2. 的facelet模板周圍的形式
  3. RichFaces的

例如,下面的代碼是我的網頁之一的消毒子集:

<h:form id="formListHome"> 
     <h:commandLink id="clWorkingExplicitLink" 
        action="testPage.xhtml?faces-redirect=true">Working</h:commandLink>  

     <h:panelGroup id="pGrpExistingListUser" rendered="true"> 

      <h:panelGrid id="pGridListTable" columns="1"> 

       <rich:extendedDataTable id="edtLists" 
        value="#{listHomeBacking.modelUserLists}" 
        var="userList" 
        selectionMode="none" 
        columnClasses="pull-center, pull-left, pull-center"> 

        <!-- List Title --> 
        <h:column> 
         <f:facet name="header"> 
          <h:outputText value="List Title" /> 
         </f:facet> 
         <h:commandLink value="#{userList.titleName}" action="#{listHomeAction.previewList}" /> 
        </h:column> 

        <!-- List Title --> 
        <h:column> 
         <f:facet name="header"> 
          <h:outputText value="List Edit" /> 
         </f:facet> 
         <h:commandLink id="clNOTWorkingExplicitLink" 
            action="testPage.xhtml?faces-redirect=true">NOT Working</h:commandLink>  

        </h:column> 

       </rich:extendedDataTable> 

      </h:panelGrid> 
     </h:panelGroup> 
    </h:form> 

任何想法或方向,可以幫助解決這個問題,並獲得更好的理解,爲什麼它不工作將不勝感激。

回答

0

我終於能夠突破這個。該問題存在於我的頁面template.xhtml後面的代碼中。在這個模板支持代碼中,我試圖拉一個UserSesion對象(@SessionScoped),這個對象由servlet使用:

HttpSession session =(HttpSession)FacesContext.getCurrentInstance()。getExternalContext()。getSession真正); this.userSess =(UserSessionTO)session.getAttribute(「userSession」);

,然後通過使用改變某些項目後手動將其推回了到會話:

FacesContext.getCurrentInstance()getExternalContext()getRequestMap()把( 「userSession」,userSess)。

問題是這是發生在每個請求上,我相信最終導致與我的數據表不同的每個請求的問題。

不知道我是否應該在我的回答中做到這一點,但我必須從這個網站上提出以下問題/回答,以幫助我回去看看問題所在。在發佈我的問題後,我發現它很有幫助,它並沒有讓我朝着正確的方向發展,但它確實有幫助。

JSF 2.0 commandLink in datatable

0

該代碼似乎是正確的,但上下文可能會影響您的結果。您是否檢查過web.xml中的jsf頁面的url-mapping是否爲* .xhtml,如您的代碼所示。如果它是* .faces它不會工作。

所以,你應該有一個:

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.xhtml</url-pattern> 
</servlet-mapping> 

不是說:

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.faces</url-pattern> 
</servlet-mapping> 
+0

當我第一次創建的項目,我必須* .faces作爲映射,因爲它是從我的項目生成默認值,它只是試圖下載我的XHTML文件。我做了一次雙重檢查,只是爲了確保我的servlet映射是正確的,並且我確實如上所述將它作爲* .xhtml。 – demsei