Использование JSF RequestScoped Bean для страницы подтверждения - PullRequest
1 голос
/ 22 апреля 2011

У меня есть страница JSF, которая загружает пользователя и позволяет мне назначать роли этому конкретному пользователю. Backing Bean, AssignRolesBean - это @RequestScoped, и я бы хотел, чтобы он оставался таким. Однако вот моя проблема ...

Когда форма отправляется, она вызывает AssignRolesBean.execute(). Затем возвращается путь к странице подтверждения. На этой странице подтверждения я хочу показать, какие новые роли будут назначены и какая роль будет удалена. Однако у меня возникают проблемы с загрузкой пользователя на странице подтверждения.

На начальной странице AssignRoles userId устанавливается с помощью параметра GET. Затем он добавляется в качестве элемента h:inputHidden на странице. Это действительно представлено. Но, опять же, на следующей странице, userId не установлен (который загружает пользователя). Есть ли способ сохранить RequestScope и не хранить идентификатор пользователя в SessionMap? Мне сказали, что использование скрытых входов позволит вам переносить данные по страницам. Но у меня проблемы с этим.

Ответы [ 2 ]

1 голос
/ 29 апреля 2011

если вы разрабатываете приложение jsf2, вы можете использовать flash scope для передачи параметров. Для получения дополнительной информации о флеш-области вы можете посмотреть Learning JSF2: Использование флеш-области

или вы можете поместить параметры в карту сеанса

фрагмент кода для получения sessionMap:

FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
0 голосов
/ 22 апреля 2011

Добавьте следующее к вашему представлению, чтобы выполнить действие по запросу GET:

<f:metadata>
    <f:event type="preRenderView" listener="#{bean.init}" />
</f:metadata>

с

public void init() {
    // Request parameters which are set by h:inputHidden, @ManagedProperty
    // or f:viewParam are available here.
    // You can just do e.g:
    this.user = userService.find(userId);
}
...