Регистрация  |  Вход

Передача данных из одной VF страницы в другую

Я думал, что передавать данные из одной странице в другую можно только через ГЕТ параметры, то есть забивая их в УРЛ.

А в VisualForce guide -> Advanced Examples -> Creating a Wizard я увидел путь сохранения данных через кастомный контроллер. Один контроллер на три страницы и он выдает разные странице в зависимости от нажатых кнопок, но при переходе со страницы на страницу данные сохраняются в нем (точнее в StateVIew), так как это все один контроллер. Классно!

Я думал, что передавать данные из одной странице в другую можно только через ГЕТ параметры, то есть забивая их в УРЛ.

А в VisualForce guide -> Advanced Examples -> Creating a Wizard я увидел путь сохранения данных через кастомный контроллер. Один контроллер на три страницы и он выдает разные странице в зависимости от нажатых кнопок, но при переходе со страницы на страницу данные сохраняются в нем (точнее в StateVIew), так как это все один контроллер. Классно!

Вообще этот принцип постоянно используется. И ты наверное его применял не раз, только выглядел он по другому.

Wizard такие, типо пошаговое заполнение форм, создаются на базе 1 страницы и 1 контроллера.

Просто страница назбита на области, которые рендарятся в зависимости от какого-нибудь параметра (например step) и получается иллюзия перехода между страницами с сохранением введенных данных (а данные реально гоняются через view state).

Простой пример - введение данных в форму с последующим подтверждением - 2 шага. Первый раз заходим на страницу - в конструкторе переменная step инициализируется в 1. ренредится страница на которой показывается первый блок с формой. Потом пользователь сабмитит форму и данные уходят в контроллер и отрабатывает экшен. Экшен возвращает туже страницу, но с параметром step = 2. На странице показывается второй блок, но в этом блоке доступны данные введенные на первом шаге. Та-дам профит - Wizard :)

Вообще этот принцип постоянно используется. И ты наверное его применял не раз, только выглядел он по другому.

Wizard такие, типо пошаговое заполнение форм, создаются на базе 1 страницы и 1 контроллера. 

Просто страница назбита на области, которые рендарятся в зависимости от какого-нибудь параметра (например step) и получается иллюзия перехода между страницами с сохранением введенных данных (а данные реально гоняются через view state).

Простой пример - введение данных в форму с последующим подтверждением - 2 шага. Первый раз заходим на страницу - в конструкторе переменная step инициализируется в 1. ренредится страница на которой показывается первый блок с формой. Потом пользователь сабмитит форму и данные уходят в контроллер и отрабатывает экшен. Экшен возвращает туже страницу, но с параметром step = 2. На странице показывается второй блок, но в этом блоке доступны данные введенные на первом шаге. Та-дам :) профит - Wizard :)

Dmitry Shnyrev
Экшен возвращает туже страницу, но с параметром step = 2. На странице показывается второй блок, но в этом блоке доступны данные введенные на первом шаге. Та-дам профит - Wizard :)

Вот я тоже думал, что Визард реализуется на стороне клиента с помощью JS (как аккордеон к примеру) или, как ты описал, запиливание-выпиливанием блоков во вью в пределах одной странице.

Но в том примере используются разные страницы без редиректа. В этом мое удивление

// The next three methods control navigation through
// the wizard. Each returns a PageReference for one of the three pages
// in the wizard. Note that the redirect attribute does not need to
// be set on the PageReference because the URL does not need to change
// when users move from page to page.

public PageReference step1() {
return Page.opptyStep1;
}

public PageReference step2() {
return Page.opptyStep2;
}

public PageReference step3() {
return Page.opptyStep3;
}

[quote="Dmitry Shnyrev"]
 [b]Экшен возвращает туже страницу[/b], но с параметром step = 2. На странице показывается второй блок, но в этом блоке доступны данные введенные на первом шаге. Та-дам :) профит - Wizard :)[/quote]

Вот я тоже думал, что Визард реализуется на стороне клиента с помощью JS (как аккордеон к примеру) или, как ты описал, запиливание-выпиливанием блоков во вью в пределах одной странице.

Но в том примере используются [b]разные [/b]страницы без редиректа. В этом мое удивление
[code]
   // The next three methods control navigation through
   // the wizard. Each returns a PageReference for one of the three pages
   // in the wizard. Note that the redirect attribute does not need to
   // be set on the PageReference because the URL does not need to change
   // when users move from page to page.

   public PageReference step1() {
      return Page.opptyStep1;
   }

   public PageReference step2() {
      return Page.opptyStep2;
   }

   public PageReference step3() {
      return Page.opptyStep3;
   }
[/code]

Хм. Что-то интересное.

Нет пока возможности проверить, но мне почему-то кажется, что при переходе между этими страницами view state а следовательно все данные (не сохраненные в базе) будут теряться.

Хм. Что-то интересное.

Нет пока возможности проверить, но мне почему-то кажется, что при переходе между этими страницами view  state а следовательно все данные (не сохраненные в базе) будут теряться.

Dmitry Shnyrev
Хм. Что-то интересное.

Нет пока возможности проверить, но мне почему-то кажется, что при переходе между этими страницами view state а следовательно все данные (не сохраненные в базе) будут теряться.

Я сразу проверил.

Читаю эти APEX и VF guides как книги прикладной магии: всюду чудеса...

[quote="Dmitry Shnyrev"]Хм. Что-то интересное.

Нет пока возможности проверить, но мне почему-то кажется, что при переходе между этими страницами view  state а следовательно все данные (не сохраненные в базе) будут теряться.[/quote]

Я сразу проверил.  :)  :)  :)  :)  :)  :)  :)  :)  :)  :)  :) 

Читаю эти APEX и VF guides как книги прикладной магии: всюду чудеса...

Добрый день.

Все верно визарды можно писать с одним контроллером и несколькими страничками
и все будет хорошо работать, т.к. при

return Page.Page2;

конструктор не будет создавать новый экземпляр так как а таком случае используется POST запрос.
Вы можете убедиться в этом посмотрев URL он не будет меняться при переходе на вторую страницу.

Если же все таки нужен GET то нужно это явно прописать.

PageReference pg = Page.Page2;
pg.setRedirect(true);
return pg;

Добрый день.

Все верно визарды можно писать с одним контроллером и несколькими страничками
и все будет хорошо работать, т.к. при 

[code]return Page.Page2;[/code]

конструктор не будет создавать новый экземпляр так как а таком случае используется POST запрос.
Вы можете убедиться в этом посмотрев URL он не будет меняться при переходе на вторую страницу.

Если же все таки нужен GET то нужно это явно прописать.

[code]PageReference pg = Page.Page2;
pg.setRedirect(true);
return pg;[/code]

Dmitry Shnyrev
Вообще этот принцип постоянно используется. И ты наверное его применял не раз, только выглядел он по другому.

Wizard такие, типо пошаговое заполнение форм, создаются на базе 1 страницы и 1 контроллера.

Просто страница назбита на области, которые рендарятся в зависимости от какого-нибудь параметра (например step) и получается иллюзия перехода между страницами с сохранением введенных данных (а данные реально гоняются через view state).

Простой пример - введение данных в форму с последующим подтверждением - 2 шага. Первый раз заходим на страницу - в конструкторе переменная step инициализируется в 1. ренредится страница на которой показывается первый блок с формой. Потом пользователь сабмитит форму и данные уходят в контроллер и отрабатывает экшен. Экшен возвращает туже страницу, но с параметром step = 2. На странице показывается второй блок, но в этом блоке доступны данные введенные на первом шаге. Та-дам профит - Wizard :)


1.По-мойму видел где то экзотический способ передачи параметров между страницами через статичные переменные это из разряда финты ушами .

2.Теперь о wizard,Летом прошлого года появилась замечательная вещь Флов дизайнер это визуальное конструирование step by step форм, там есть поддержка апекс кода отправка емайлов и т.д. Если интересуют wizard,cмотреть обязательно,Особенно хорошо, когда есть у нас много условий перехода между формами.Пилил пару раз для разных фирм работает хорошо клиенты были довольны.

[quote="Dmitry Shnyrev"]Вообще этот принцип постоянно используется. И ты наверное его применял не раз, только выглядел он по другому.

Wizard такие, типо пошаговое заполнение форм, создаются на базе 1 страницы и 1 контроллера. 

Просто страница назбита на области, которые рендарятся в зависимости от какого-нибудь параметра (например step) и получается иллюзия перехода между страницами с сохранением введенных данных (а данные реально гоняются через view state).

Простой пример - введение данных в форму с последующим подтверждением - 2 шага. Первый раз заходим на страницу - в конструкторе переменная step инициализируется в 1. ренредится страница на которой показывается первый блок с формой. Потом пользователь сабмитит форму и данные уходят в контроллер и отрабатывает экшен. Экшен возвращает туже страницу, но с параметром step = 2. На странице показывается второй блок, но в этом блоке доступны данные введенные на первом шаге. Та-дам :) профит - Wizard :)[/quote]
1.По-мойму видел где то экзотический способ передачи параметров между страницами через статичные переменные это из разряда финты ушами :D .

2.Теперь о wizard,Летом прошлого года появилась замечательная вещь Флов дизайнер это визуальное конструирование step by step форм, там есть поддержка апекс кода отправка емайлов и т.д. Если интересуют wizard,cмотреть обязательно,Особенно хорошо, когда есть у нас много условий перехода между формами.Пилил пару раз для разных фирм работает хорошо клиенты были довольны.

Flow Designer интересная штука, но мне пока по работе не приходилось с ней сталкиваться.
Все же Flow очень хорошо подчеркивает Salesforce style - "работа только мышкой". А также предоставляет гибкий в плане настройки инструмент так сказать "не для программиста".

[url=https://help.salesforce.com/HTViewHelpDoc?id=vpm_designer_overview.htm&language=en_US]Flow Designer[/url] интересная штука, но мне пока по работе не приходилось с ней сталкиваться. 
Все же Flow очень хорошо подчеркивает Salesforce style - "работа только мышкой". А также предоставляет гибкий в плане настройки инструмент так сказать "не для программиста".

Dmitry Shnyrev
Flow Designer интересная штука, но мне пока по работе не приходилось с ней сталкиваться.
Все же Flow очень хорошо подчеркивает Salesforce style - "работа только мышкой". А также предоставляет гибкий в плане настройки инструмент так сказать "не для программиста".

Полностью согласен, но маленькое "но" очень сильно сокращает время разработки что большой + и там потдерживается apex для форм то есть писать код есть куда и я думаю это будет развиваться дальше .

[quote="Dmitry Shnyrev"][url=https://help.salesforce.com/HTViewHelpDoc?id=vpm_designer_overview.htm&language=en_US]Flow Designer[/url] интересная штука, но мне пока по работе не приходилось с ней сталкиваться. 
Все же Flow очень хорошо подчеркивает Salesforce style - "работа только мышкой". А также предоставляет гибкий в плане настройки инструмент так сказать "не для программиста".[/quote]
Полностью согласен, но маленькое "но" очень сильно сокращает время разработки что большой + и там потдерживается apex для форм то есть писать код есть куда и я думаю это будет развиваться дальше :) .

Dmitry Shnyrev
Flow Designer интересная штука, но мне пока по работе не приходилось с ней сталкиваться.
Все же Flow очень хорошо подчеркивает Salesforce style - "работа только мышкой". А также предоставляет гибкий в плане настройки инструмент так сказать "не для программиста".

Ну ничего себе инструментик!!!

мы так и без работы останемся.

хотя там все таки не так просто, чтобы любой админ это освоил в тех объемах, которые требуются для решения реальных прикладных задач.

А вот програмистам это нужно бы освоить - это хоть и "мышкой", но все таки програмирование.

[quote="Dmitry Shnyrev"][url=https://help.salesforce.com/HTViewHelpDoc?id=vpm_designer_overview.htm&language=en_US]Flow Designer[/url] интересная штука, но мне пока по работе не приходилось с ней сталкиваться. 
Все же Flow очень хорошо подчеркивает Salesforce style - "работа только мышкой". А также предоставляет гибкий в плане настройки инструмент так сказать "не для программиста".[/quote]

Ну ничего себе инструментик!!!

мы так и без работы останемся.

хотя там все таки не так просто, чтобы любой админ это освоил в тех объемах, которые требуются для решения реальных прикладных задач.

А вот програмистам это нужно бы освоить - это хоть и "мышкой", но все таки програмирование.

Den Brown
Dmitry Shnyrev
Flow Designer интересная штука, но мне пока по работе не приходилось с ней сталкиваться.
Все же Flow очень хорошо подчеркивает Salesforce style - "работа только мышкой". А также предоставляет гибкий в плане настройки инструмент так сказать "не для программиста".

Ну ничего себе инструментик!!!

мы так и без работы останемся.

хотя там все таки не так просто, чтобы любой админ это освоил в тех объемах, которые требуются для решения реальных прикладных задач.

А вот програмистам это нужно бы освоить - это хоть и "мышкой", но все таки програмирование.


я бы не сказал что там только мышкой.Самый простой способ разобраться как это работает поставить демо package.

[quote="Den Brown"][quote="Dmitry Shnyrev"][url=https://help.salesforce.com/HTViewHelpDoc?id=vpm_designer_overview.htm&language=en_US]Flow Designer[/url] интересная штука, но мне пока по работе не приходилось с ней сталкиваться. 
Все же Flow очень хорошо подчеркивает Salesforce style - "работа только мышкой". А также предоставляет гибкий в плане настройки инструмент так сказать "не для программиста".[/quote]

Ну ничего себе инструментик!!!

мы так и без работы останемся.

хотя там все таки не так просто, чтобы любой админ это освоил в тех объемах, которые требуются для решения реальных прикладных задач.

А вот програмистам это нужно бы освоить - это хоть и "мышкой", но все таки програмирование.[/quote]
я бы не сказал что там только мышкой.Самый простой способ разобраться как это работает поставить демо package.

а где этот демо-пакедж находится?
У меня в орге вроде все есть из того, что там на видео показано.

а где этот демо-пакедж находится?
У меня в орге вроде все есть из того, что там на видео показано.

Den Brown
а где этот демо-пакедж находится?
У меня в орге вроде все есть из того, что там на видео показано.

setup--->Create -->Workflow & Approvals -->Flow--> New Flow-->в правом верхним углу есть get started-->после появления окна с видео,в правом углу есть Samples Flow install

[quote="Den Brown"]а где этот демо-пакедж находится?
У меня в орге вроде все есть из того, что там на видео показано.[/quote]
setup--->Create -->Workflow & Approvals -->Flow--> New Flow-->в правом верхним углу есть get started-->после появления окна с видео,в правом углу есть Samples Flow install

Сегодня прям как совпало обсуждался вопрос работы Visualforce страниц и как раз затронули нашу тему.

В общем если 2 и более страницы привязаны к одному контроллеру, то при переходе (pageReference) между ними передается View State, что означает передачу значений переменных между данными страницами.

Из опыта наших разработчиков - данный способ глючный Если делать wizard, то только на одной странице, как я описал выше.

Сегодня прям как совпало :) обсуждался вопрос работы Visualforce страниц и как раз затронули нашу тему.

В общем если 2 и более страницы привязаны к одному контроллеру, то при переходе (pageReference) между ними передается View State, что означает передачу значений переменных между данными страницами.

Из опыта наших разработчиков - данный способ глючный :) Если делать wizard, то только на одной странице, как я описал выше.

Dmitry Shnyrev
Из опыта наших разработчиков - данный способ глючный Если делать wizard, то только на одной странице, как я описал выше.


OK, а как работают те страницы которые создаются во Flow Designer?
Это одна страница или несколько на одном контроллере?

[quote="Dmitry Shnyrev"]
Из опыта наших разработчиков - данный способ глючный :) Если делать wizard, то только на одной странице, как я описал выше.[/quote]


OK, а как работают те страницы которые создаются во Flow Designer?
Это одна страница или несколько на одном контроллере?

Возник большой вопрос по Flows:

те визарды, страницы, которые разработаны как Flow, они доступны на сайте?
на портале?

Возник большой вопрос по Flows:

те визарды, страницы, которые разработаны как Flow, они доступны на сайте?
на портале?

Den Brown
Возник большой вопрос по Flows:

те визарды, страницы, которые разработаны как Flow, они доступны на сайте?
на портале?


На сколько я помню они просто добавляются как компоненты VisualForce page.Причин по которым они не могут быть не доступны я не вижу.Хотя точно это не проверял.

[quote="Den Brown"]Возник большой вопрос по Flows:

те визарды, страницы, которые разработаны как Flow, они доступны на сайте?
на портале?[/quote]
На сколько я помню они просто добавляются как компоненты VisualForce page.Причин по которым они не могут быть не доступны я не вижу.Хотя точно это не проверял.

Sergey Prichepo
Den Brown
Возник большой вопрос по Flows:

те визарды, страницы, которые разработаны как Flow, они доступны на сайте?
на портале?


На сколько я помню они просто добавляются как компоненты VisualForce page.Причин по которым они не могут быть не доступны я не вижу.Хотя точно это не проверял.

Работают без проблем. Но там есть другая проблема...досктупен только один язык.

[quote="Sergey Prichepo"][quote="Den Brown"]Возник большой вопрос по Flows:

те визарды, страницы, которые разработаны как Flow, они доступны на сайте?
на портале?[/quote]
На сколько я помню они просто добавляются как компоненты VisualForce page.Причин по которым они не могут быть не доступны я не вижу.Хотя точно это не проверял.[/quote]

Работают без проблем. Но там есть другая проблема...досктупен только один язык.

Господа!

Сталкивался тоже с такой дилемой и планировал использовать Flow на одном из проектов для опросника, но!
Опытные товарищи открестились..мол глючное это дело и лучше пойти другими путями....на тот момент меня переубедили...больше не сталкивался с таким вопросом.

wilder, спасибо за еще один ответ по поводу языка.

Может кто-то еще знает практические +/- данного подхода.

Спасибо.

Господа!

Сталкивался тоже с такой дилемой и планировал использовать Flow на одном из проектов для опросника, но!
Опытные товарищи открестились..мол глючное это дело и лучше пойти другими путями....на тот момент меня переубедили...больше не сталкивался с таким вопросом.

wilder, спасибо за еще один ответ по поводу языка.

Может кто-то еще знает практические +/- данного подхода.

Спасибо.

Art Vegas
Господа!

Сталкивался тоже с такой дилемой и планировал использовать Flow на одном из проектов для опросника, но!
Опытные товарищи открестились..мол глючное это дело и лучше пойти другими путями....на тот момент меня переубедили...больше не сталкивался с таким вопросом.

wilder, спасибо за еще один ответ по поводу языка.

Может кто-то еще знает практические +/- данного подхода.

Спасибо.

+ Можно быстренько сделать страничку с формой и использовать ее. Правда это здорово если форма простая.
- Кастомизация чуть меньше чеи никакая в плане дизайна.

[quote="Art Vegas"]Господа!

Сталкивался тоже с такой дилемой и планировал использовать Flow на одном из проектов для опросника, но!
Опытные товарищи открестились..мол глючное это дело и лучше пойти другими путями....на тот момент меня переубедили...больше не сталкивался с таким вопросом.

wilder, спасибо за еще один ответ по поводу языка.

Может кто-то еще знает практические +/- данного подхода.

Спасибо.[/quote]

+ Можно быстренько сделать страничку с формой и использовать ее. Правда это здорово если форма простая.
- Кастомизация чуть меньше чеи никакая в плане дизайна.

Получается что, чтобы использовать такой Flow на сайте, нужно засадить этот Flow в виде Компонента в какую-то кастомную VF страницу. Но как указать этот Flow в разметке? я не вижу сущетсвующих Flows в разделе VF Components.

Получается что, чтобы использовать такой Flow на сайте, нужно засадить этот Flow  в виде Компонента в какую-то кастомную VF страницу. Но как указать этот Flow в разметке? я не вижу сущетсвующих Flows в разделе VF Components.

Den Brown
Получается что, чтобы использовать такой Flow на сайте, нужно засадить этот Flow в виде Компонента в какую-то кастомную VF страницу. Но как указать этот Flow в разметке? я не вижу сущетсвующих Flows в разделе VF Components.

а вы, батенька, не ленитесь https://help.salesforce.com/HTViewHelpDoc?id=vpm_admin_add_flow_to_vfpage.htm&language=en_US

[quote="Den Brown"]Получается что, чтобы использовать такой Flow на сайте, нужно засадить этот Flow  в виде Компонента в какую-то кастомную VF страницу. Но как указать этот Flow в разметке? я не вижу сущетсвующих Flows в разделе VF Components.[/quote]
 а вы, батенька, не ленитесь :) [url]https://help.salesforce.com/HTViewHelpDoc?id=vpm_admin_add_flow_to_vfpage.htm&language=en_US[/url]

Все, понял Спасибо.

как я вижу "сила" потоков, главное отличие от самопильного визарда заключается в возможности легкого "вилкования" процесса и модульная сборка. Некоторые потоки в примерах являются просто точками входа и выхода из процесса, включая в себе различные другие потоки. Таким образом потоки можно соединять с др другом как элементы Лего. Круто.

Ну а собственно сама разбивка процесса ввода инфы на несколько экранов служит для удобства пользователя и бесшовного перехода от одного потока к другому.

Все, понял  :)  Спасибо.

как я вижу "сила" потоков, главное отличие от самопильного визарда заключается в возможности легкого "вилкования" процесса и модульная сборка. Некоторые потоки в примерах являются просто точками входа и выхода из процесса, включая в себе различные другие потоки. Таким образом потоки можно соединять с др другом как элементы Лего. Круто.

Ну а собственно сама разбивка процесса ввода инфы на несколько экранов служит для удобства пользователя и бесшовного перехода от одного потока к другому.

А можно в поточное поле вывести поле какой-то записи так, как это делается в ВФ разметке: просто указываешь поле и оно появляется в разметке в виде правильного элемента, с правильными опциями в случае создания или редактирования.

например на шаге 1 Потока выбирается значение из пик-листа. Мне сейчас нужно полностью воссоздавать этот Пиклист в потоке, назначать его значение в какую-то вновь созданную поточную переменную и позже в момент создания записи передавать эту переменную в пик-листовое поле записи. Двойная работа. Но пока не вижу как это упростить.

А можно в поточное поле вывести поле какой-то записи так, как это делается в ВФ разметке: просто указываешь поле и оно появляется в разметке в виде правильного элемента, с правильными опциями в случае создания или редактирования.

например на шаге 1 Потока выбирается значение из пик-листа. Мне сейчас нужно полностью воссоздавать этот Пиклист в потоке, назначать его значение в какую-то вновь созданную поточную переменную и позже в момент создания записи передавать эту переменную в пик-листовое поле записи. Двойная работа. Но пока не вижу как это упростить.