2012-05-17 2 views
0

У меня есть небольшой критический сценарий.3 страница навигация выпуск

Рассмотрите 3 страницы. Page1, Page2, Page3.

От Page1. Один параметр входит в QueryString с именем «note». Он имеет два значения «CreateNote» или «UpdateNote». На основе этих значений я скрываю и показываю небольшое содержание на Page2.

До этого здесь проблем нет.

От Page2 Мне нужно перейти на Page3. On Page3 кнопка назад. Я попытался установить примечание атрибут на Назад, но все же это не настройка этих данных и, следовательно, на Page2 null.


Несколько код, как показано ниже

Page1 URL как

http://localhost:9095/Oscer/pages/UpdateNote.jsf?modified=NO&note=UpdateNote&docid=206&callFrom=prescribe 

На Page2

Это ручка с использованием скриптлетов как ...

Установить объект примечания на вызов конструктора backingbean.

<% 
    String note = request.getParameter("note"); 
    if(note == null || note.equals("")){ 
     note = (String)request.getAttribute("note"); 
    } 
    request.setAttribute("note",note); 
%> 

На Страница3

Пробовал обрабатывать на BackButton как,

if(note == null){ 
      FacesContext facesContext = FacesContext.getCurrentInstance(); 
      Map<String,String> requestObj = facesContext.getExternalContext().getRequestParameterMap(); 
      if(requestObj != null){ 
       note = requestObj.get("note"); //Either of CreateNote or UpdateNote 
      } 
     } 

     request.setAttribute("note", note); 

Теперь, когда мы перемещаемся из Страница3 к Page2 назад, хотя я установил request.setAttribute("note", note); Это дает NULL указатель исключение причина примечание Page2 не установлен :(

Я не могу понять, как перемещаться в случае, как строка запроса handeled jsp page ??

ответ

0

Я сделал это ... :)

То, что я сделал это ...

При переходе от Page1 к Page2 на одном из backingBean скажем sampleBackingBean установить одну переменную , Инициализировать его значение, получив примечание от запроса Объем в конструкторе по умолчанию SampleBackingBean.

И JSP страницы Page2 Что бы показать и содержанием шкуры там оказанные с использованием {sampleBackingBean.note}

Теперь все работает отлично ... :)

0

Вместо того чтобы держать атрибут note в области действия запроса, вы можете сохранить его в поле «Сфера» во время навигации с Страница 1 на страницу2. На странице2 извлеките этот атрибут из сеанса, а не в строку запроса (или область запроса). Итак, на стр. 3, даже если нажата кнопка «Назад», код должен работать нормально.

+0

Вы правы, но в случае этих трех страниц, если пользователь переместится на любую другую страницу из меню. Он будет там в сессии всегда ... И поставить такую ​​ценность в сеансе - не очень хорошая идея ... – Ketan

+0

В вашем решении, если вы поместите значение «примечание» в область запроса, тогда, если на странице пользователь нажимает кнопку «Назад», переменная «примечание», ограниченная запросом, не будет передана на страницу2, и вы получите «NullPointerException» – Apurv

Смежные вопросы