У меня есть DataTable, как следующийNon-Аякса метод дает тот же результат в ViewScoped управляемый компонент
<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>
И у меня есть имя панели, как детали, как следующие
<p:panel>
<h:outputText value="#{userTable.userId}"/>
<h:outputText value="#{userTable.userName}"/>
</p:panel>
Мой UserTable управляемый компонент вид область видимости. Функциональность похожа, когда пользователь нажимает на commandLink, что мой метод получит информацию о пользователе. После получения данных dataTable будет скрываться, и панель будет показана. Для пользователя это почти похоже на другую страницу.
Проблема заключается в том, что когда пользователь нажмет на любой пользовательский интерфейс (commandLink), он получит подробные сведения. Затем он может использовать кнопку возврата в браузере и попытаться получить информацию, нажав другой userId. Но в этом случае пользователь получает тот же результат, что и предыдущий. И ничего нет в журнале ошибок.
Я нашел где-то, что в режиме видимости области видимости эта проблема существует с помощью метода действий, отличного от ajax. Но мне нужно держать его в viewcoped для поддержания состояния таблицы с сортировкой и разбиением на страницы. Поэтому всякий раз, когда пользователь нажимает кнопку «Назад», я могу показать один и тот же экран перед выбором.
Пожалуйста, помогите. Заранее спасибо.
Я запутался о вашем потоке: вы хотите, чтобы пользователь, чтобы остаться на той же странице, просто показать различные элементы на нем? Как насчет наличия 'f: viewParam name =" userId "', который, когда пустой показывает таблицу, и загружает пользовательский объект, если нет (используйте, например, 'f: viewAction'). – mabi
@mabi Да, вы правы в реализации. Но f: viewParam используется для установки значений в url для запроса запроса. Хотя в моем случае у меня есть запрос на отправку по командной ссылке. –
И вы хотите, чтобы он остался таким? Потому что, если вы разрешаете обратную навигацию, это положение в URL-адресе является хорошей идеей. – mabi