2013-08-06 2 views
1

Я работаю с JSF и PrettyFaces, и мне нужно сделать следующее. У меня есть 4 кнопки, сгенерированные в ui: repeat. Каждый commandButton устанавливает объект в компоненте «Разговор», а затем мне нужно перейти на другую страницу и получить объект, который был установлен на нажатой кнопке. Это кажется довольно простым, но проблема в том, что мне нужен URL-адрес PrettyaFaces в браузере.Диалог Сфера действия не работает с перенаправлением

Тесты, проведенные:

  • Если я поставил Xhtml ресурс в виде строки в действии возврата CommandButton перемещается правильно, но точки URL к Xhtml ресурса, а не к довольно-граней дружественный URL. (Пример: ... host/my-web/prices.xhtml)

  • Если я установил дружественный URL-адрес в качестве строки (/ web/prices /) в действии элемента управления return, не перемещается.

  • Если я редирект следующим образом:

    FacesContext context = FacesContext.getCurrentInstance(); 
    HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest(); 
    
    try { 
        context.getExternalContext().redirect("/web/prices/"); 
    

Это правильно переходит к дружественной URL, но разговор не работает, потому что, прежде чем перенаправить я устанавливаю объект RECIVED в CommandButton действие и при навигации по этому объекту в блоке разговора является нулевым.

Любая идея, как решить эту проблему?

Заранее спасибо.

+0

Какую версию PrettyFaces вы используете? – chkal

+0

Проблема в том, что бобы не выживут при переадресации. Было бы лучше хранить данные в сеансе и извлекать их в '@ PostConstruct' компонента, который обрабатывает вашу страницу prices.xhtml. –

ответ

3

Похоже, вы не добавляете параметр cid в свои переадресации. Это необходимо передать через POST или строку запроса, чтобы продолжить разговор. Значение, которое вы можете получить из инжектируемого объекта беседы.

+0

Я считаю, что @LightGuard верен. Вам необходимо вручную добавить параметр CID, если вы выполняете переадресацию программно. – Lincoln

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