Ответ 1
Зависит от того, отправляете ли вы перенаправление или просто переходите.
Если вы отправляете перенаправление, поместите его в область флэш-памяти:
Faces.setFlashAttribute("car", car);
Это доступно в @PostConstruct
следующего bean как:
Car car = Faces.getFlashAttribute("car");
Или, если вы просто перемещаетесь, то поставьте его в область запроса:
Faces.setRequestAttribute("car", car);
Это доступно в @PostConstruct
следующего bean как:
Car car = Faces.getRequestAttribute("car");
См. также:
- Включение одного вида области видимости bean в другом представлении с расширенным охватом bean заставляет его воссоздаваться
- Как передать объекты с одной страницы на другую страницу в JSF без написания конвертера
Обратите внимание, что я предполагаю, что вы хорошо знаете о выборе дизайна из двух совершенно разных представлений, которые не могут существовать (быть идемпотентными) без другого представления, вместо того, чтобы иметь, например, один вид с условно визуализированным контентом. И что вы уже знаете, как должно выглядеть представление, когда оно действительно запрашивается idempotently (т.е. Через закладку, общую ссылку, поисковым роботом и т.д.). Если нет, то я настоятельно рекомендую внимательно прочитать ответ на этот вопрос: Как перемещаться в JSF? Как заставить URL-адрес отражать текущую страницу (а не предыдущую).
Обновить:, если вы не используете OmniFaces, используйте соответственно следующее:
FacesContext.getCurrentInstance().getExternalContext().getFlash().put("car", car);
Car car = (Car) FacesContext.getCurrentInstance().getExternalContext().getFlash().get("car");
FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("car", car);
Car car = (Car) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("car");