2013-07-03 46 views
-1

我有一個頁面可以鏈接到一個參數...當您在頁面中時,您可以從數據表中選擇一個項目 - 我想從中能夠使用完全重定向回發相同的頁面,以便重寫查詢參數。如何完整回發到JSF中的同一頁面

此刻,當我回發到同一頁面時,由於回發來自當前頁面,它似乎總是被視爲部分回發。如何完全重定向到同一頁面,或者無法獲取URL中的參數覆蓋。

我可以在沒有完全刷新的情況下打開項目,但是如果他們已經通過另一個頁面輸入了頁面,那麼URL在其中包含參數...稍後刷新時,它會從參數中提取原始數據。 ..

這是在我的數據表中,並且這是放置在我重定向到相同的頁面。我嘗試了結果和行動......!

<f:facet name="footer"> 
<p:commandButton id="openMyTask" value="Open Task" icon="ui-icon-search" action="/pages/customer/customerTasks?includeViewParams=false;faces-redirect=true" > 
<f:param name="admsTaskId" value="#{customerTaskBean.selectedTaskId}"></f:param> 
</p:commandButton> 
</f:facet> 

非常感謝

SM

+0

是'p:commandButton' primefaces還是普通的JSF? Primefaces在您的問題中沒有被標記,所以請讓我知道,我會根據需要更新我的答案。 – Andy

+0

嗨,我試過p:buton和p:commandButton。我正在使用Primefaces,謝謝。 – smackenzie

+0

好的,你想在你選擇一個項目時重新加載頁面嗎?另外,你是否總是指着那個頁面點擊按鈕? – Andy

回答

0

這似乎工作:

<p:dataTable id="myTasks" value 

="#{customerTasksBean.customerTasks}" var="task" selectionMode="single" rowKey="#{task.id}" 
        paginator="true" rows="20" paginatorTemplate="{PageLinks} {RowsPerPageDropdown}" rowsPerPageTemplate="10,20,30" 
        editable="false" rowStyleClass="#{customerTasksBean.taskStatusService.getTaskRowClass(task)}"> 

        <p:ajax event="rowSelect" listener="#{customerTasksBean.onMyTaskSelect}" update="openTask" /> 

        <f:facet name="header"> 
          Current Request Pool 
        </f:facet> 

        <p:column headerText="Task ID" sortBy="#{task.id}"> 
         <h:outputText value="#{task.id}" /> 
        </p:column> 

        <p:column headerText="Task Type" sortBy="#{task.type.toString()}"> 
         <h:outputText value="#{task.type.toString()}" /> 
        </p:column> 

        <p:column headerText="Created For" sortBy="#{task.createdFor.fullName}"> 
         <h:outputText value="#{task.createdFor.fullName}" /> 
        </p:column> 

        <p:column headerText="Submitted" sortBy="#{task.createdDate}"> 
         <h:outputText value="#{task.createdDate}"> 
          <f:convertDateTime pattern="dd/MM/yyyy hh:mm" /> 
         </h:outputText> 
        </p:column> 

        <p:column headerText="Required By" sortBy="#{task.requiredByDate}"> 
         <h:outputText value="#{task.requiredByDate}"> 
          <f:convertDateTime pattern="dd/MM/yyyy hh:mm" /> 
         </h:outputText> 
        </p:column> 

        <p:column headerText="Days to completion" sortBy="#{aDMSBean.taskRequiredDays(task)}"> 
         <h:outputText value="#{myTasksBean.taskStatusService.getDaysLeftToTaskCompletion(task)} " /> 
        </p:column> 



        <p:column headerText="Comment"> 
         <h:outputLabel id="taskCustomerComment" value="Hover mouse over" /> 
         <p:tooltip for="taskCustomerComment" value="#{task.customerComment}" /> 
        </p:column> 

        <f:facet name="footer"> 
         <p:button id="openTask" value="Open Task" icon="ui-icon-search" 
          outcome="/pages/customer/customerTasks?includeViewParams=false;faces-redirect=true"> 
          <f:param name="admsTaskId" value="#{customerTasksBean.selectedTaskId}"> 
          </f:param> 

         </p:button> 

        </f:facet> 
       </p:dataTable> 
+0

看看我的答案。你不需要做所有這些,特別是'includeViewParams = false; faces-redirect = true'。你沒有做你認爲你在做的事。 – Andy

+0

p:按鈕已經在做'GET'請求而不是發佈權限了?所以不需要'faces-redirect = true',你只需要覆蓋正確的值,'includeViewParams = false'也不需要。如果你發送了兩個值,你只想覆蓋一個值,但是保留另一個值?當你點擊按鈕時,你將失去一個'GET'參數 – Andy

+0

最後,如果你只是刷新同一頁面,那麼'outcome =「/ pages/customer/customerTasks'也不需要。只是不包括「結果」,它會默認重新加載相同的頁面。更加優雅而不是硬編碼。但是,如果它適合你,我猜是有效的。 – Andy

1

如果你想重新顯示與查詢字符串同一頁的URL,然後use p:button

<f:facet name="footer"> 
    <p:button id="openMyTask" includeViewParams="true" value='Open Task'> 
     <f:param name='admsTaskId' value='#{customerTaskBean.selectedTaskId}'/> 
    </p:button> 
</f:facet> 

includeViewParams="true"確保您包括來自前一頁發送的參數。

第二行覆蓋這些值。如果你想覆蓋更多的值,那麼你包含更多f:param

另請注意,我沒有指定outcome。既然你想回到同一頁面,當outcome在這種情況下沒有被指定時,它會這樣做。

注意:根據您的回答判斷,它在您看來並不像您想要回發。正如BalusC在評論中指出的那樣:「一個」回傳「是對同一個URL的POST請求,因爲請求的是帶有表單的頁面。」

+0

嗨,我不想從上一頁發送參數,因爲我在頁面中做了一次新的選擇,並且需要替換參數,因此請完全重定向到它自己。 – smackenzie

+0

@ user1754307你的意思是去同一頁面,但與查詢字符串參數,對不對?如果這就是你想要的,那麼這就是答案。不過,我不太喜歡這種方法,因爲它允許應用程序向用戶發佈,他們可以在查詢字符串中發佈任何他們想要的內容。 –

+0

您不會從前一頁發送參數。您將包括所有參數並覆蓋它們的值。 – Andy

相關問題