我有一個像下面非Ajax方法ViewScoped給予同樣的結果託管bean
<p:dataTable value="#{userTable.tempLists}" var="user"
sortBy="#{user.userId}" sortOrder="descending"
paginator="true"
rows="10" paginatorPosition="bottom">
<p:column headerText="User ID" sortBy="#{user.userId}">
<p:commandLink ajax="false" value="#{user.userId}" action="#{userTable.showDetails(user.userId)}"/>
</p:column>
<p:column headerText="User Name" sortBy="#{user.userName}">
<h:outputText value="#{user.userName}">
</h:outputText>
</p:column>
</p:dataTable>
一個DataTable我有一個小組名稱的細節,如以下
<p:panel>
<h:outputText value="#{userTable.userId}"/>
<h:outputText value="#{userTable.userName}"/>
</p:panel>
我的用戶表管理bean是視圖作用域。功能就像當用戶點擊commandLink時,我的方法將獲得用戶的詳細信息。獲取詳細信息後,dataTable將隱藏並顯示面板。對於用戶來說,它幾乎就像一個不同的頁面。
問題在於,當用戶點擊任何userId(commandLink)時,他將完美地獲得細節。然後他可以使用瀏覽器後退按鈕,並嘗試通過單擊另一個用戶標識來獲取詳細信息。但在這種情況下,用戶得到的結果與上一個相同。並沒有在錯誤日誌中。
我發現在視圖範圍管理bean的某個地方,這個問題與非ajax動作方法存在。但我需要保持它在viewcoped維護表狀態與排序和分頁。所以無論何時用戶按下返回按鈕,我都可以在選擇前顯示相同的屏幕
請幫忙。提前致謝。
我感到困惑的流程:你希望用戶停留在同一頁面上,只是表現出它不同的元素?如果有一個'f:viewParam name =「userId」',那麼當空表顯示表時加載用戶實體(如果可能,則使用'f:viewAction')。 – mabi
@mabi是的,你是對的實施。但是f:viewParam用於設置get請求的url中的值。在我的情況下,我通過命令鏈接發佈了請求。 –
你想讓它保持那種方式嗎?因爲如果你允許反向導航,把這個狀態放在URL中是個好主意。 – mabi