Я думал, что передавать данные из одной странице в другую можно только через ГЕТ параметры, то есть забивая их в УРЛ.
А в 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 :)
Вот я тоже думал, что Визард реализуется на стороне клиента с помощью 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 а следовательно все данные (не сохраненные в базе) будут теряться.
Я сразу проверил.
Читаю эти APEX и VF guides как книги прикладной магии: всюду чудеса...
[quote="Dmitry Shnyrev"]Хм. Что-то интересное.
Нет пока возможности проверить, но мне почему-то кажется, что при переходе между этими страницами view state а следовательно все данные (не сохраненные в базе) будут теряться.[/quote]
Я сразу проверил. :) :) :) :) :) :) :) :) :) :) :)
Читаю эти APEX и VF guides как книги прикладной магии: всюду чудеса...
Добрый день.
Все верно визарды можно писать с одним контроллером и несколькими страничками и все будет хорошо работать, т.к. при
return Page.Page2;
конструктор не будет создавать новый экземпляр так как а таком случае используется POST запрос. Вы можете убедиться в этом посмотрев URL он не будет меняться при переходе на вторую страницу.
Если же все таки нужен GET то нужно это явно прописать.
Добрый день.
Все верно визарды можно писать с одним контроллером и несколькими страничками
и все будет хорошо работать, т.к. при
[code]return Page.Page2;[/code]
конструктор не будет создавать новый экземпляр так как а таком случае используется POST запрос.
Вы можете убедиться в этом посмотрев URL он не будет меняться при переходе на вторую страницу.
Если же все таки нужен GET то нужно это явно прописать.
[code]PageReference pg = Page.Page2;
pg.setRedirect(true);
return pg;[/code]
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 - "работа только мышкой". А также предоставляет гибкий в плане настройки инструмент так сказать "не для программиста".
Полностью согласен, но маленькое "но" очень сильно сокращает время разработки что большой + и там потдерживается 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 для форм то есть писать код есть куда и я думаю это будет развиваться дальше :) .
Ну ничего себе инструментик!!!
мы так и без работы останемся.
хотя там все таки не так просто, чтобы любой админ это освоил в тех объемах, которые требуются для решения реальных прикладных задач.
А вот програмистам это нужно бы освоить - это хоть и "мышкой", но все таки програмирование.
[quote="Dmitry Shnyrev"][url=https://help.salesforce.com/HTViewHelpDoc?id=vpm_designer_overview.htm&language=en_US]Flow Designer[/url] интересная штука, но мне пока по работе не приходилось с ней сталкиваться.
Все же Flow очень хорошо подчеркивает Salesforce style - "работа только мышкой". А также предоставляет гибкий в плане настройки инструмент так сказать "не для программиста".[/quote]
Ну ничего себе инструментик!!!
мы так и без работы останемся.
хотя там все таки не так просто, чтобы любой админ это освоил в тех объемах, которые требуются для решения реальных прикладных задач.
А вот програмистам это нужно бы освоить - это хоть и "мышкой", но все таки програмирование.
я бы не сказал что там только мышкой.Самый простой способ разобраться как это работает поставить демо 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.
а где этот демо-пакедж находится? У меня в орге вроде все есть из того, что там на видео показано.
а где этот демо-пакедж находится?
У меня в орге вроде все есть из того, что там на видео показано.
а где этот демо-пакедж находится? У меня в орге вроде все есть из того, что там на видео показано.
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, то только на одной странице, как я описал выше.
Из опыта наших разработчиков - данный способ глючный Если делать wizard, то только на одной странице, как я описал выше.
OK, а как работают те страницы которые создаются во Flow Designer? Это одна страница или несколько на одном контроллере?
[quote="Dmitry Shnyrev"]
Из опыта наших разработчиков - данный способ глючный :) Если делать wizard, то только на одной странице, как я описал выше.[/quote]
OK, а как работают те страницы которые создаются во Flow Designer?
Это одна страница или несколько на одном контроллере?
Возник большой вопрос по Flows:
те визарды, страницы, которые разработаны как Flow, они доступны на сайте? на портале?
Возник большой вопрос по Flows:
те визарды, страницы, которые разработаны как Flow, они доступны на сайте?
на портале?
Возник большой вопрос по Flows:
те визарды, страницы, которые разработаны как Flow, они доступны на сайте? на портале?
На сколько я помню они просто добавляются как компоненты VisualForce page.Причин по которым они не могут быть не доступны я не вижу.Хотя точно это не проверял.
[quote="Den Brown"]Возник большой вопрос по Flows:
те визарды, страницы, которые разработаны как Flow, они доступны на сайте?
на портале?[/quote]
На сколько я помню они просто добавляются как компоненты VisualForce page.Причин по которым они не могут быть не доступны я не вижу.Хотя точно это не проверял.
Возник большой вопрос по Flows:
те визарды, страницы, которые разработаны как Flow, они доступны на сайте? на портале?
На сколько я помню они просто добавляются как компоненты VisualForce page.Причин по которым они не могут быть не доступны я не вижу.Хотя точно это не проверял.
Работают без проблем. Но там есть другая проблема...досктупен только один язык.
[quote="Sergey Prichepo"][quote="Den Brown"]Возник большой вопрос по Flows:
те визарды, страницы, которые разработаны как Flow, они доступны на сайте?
на портале?[/quote]
На сколько я помню они просто добавляются как компоненты VisualForce page.Причин по которым они не могут быть не доступны я не вижу.Хотя точно это не проверял.[/quote]
Работают без проблем. Но там есть другая проблема...досктупен только один язык.
Господа!
Сталкивался тоже с такой дилемой и планировал использовать Flow на одном из проектов для опросника, но! Опытные товарищи открестились..мол глючное это дело и лучше пойти другими путями....на тот момент меня переубедили...больше не сталкивался с таким вопросом.
wilder, спасибо за еще один ответ по поводу языка.
Может кто-то еще знает практические +/- данного подхода.
Господа!
Сталкивался тоже с такой дилемой и планировал использовать Flow на одном из проектов для опросника, но!
Опытные товарищи открестились..мол глючное это дело и лучше пойти другими путями....на тот момент меня переубедили...больше не сталкивался с таким вопросом.
wilder, спасибо за еще один ответ по поводу языка.
Может кто-то еще знает практические +/- данного подхода.
Спасибо.
Господа!
Сталкивался тоже с такой дилемой и планировал использовать Flow на одном из проектов для опросника, но! Опытные товарищи открестились..мол глючное это дело и лучше пойти другими путями....на тот момент меня переубедили...больше не сталкивался с таким вопросом.
wilder, спасибо за еще один ответ по поводу языка.
Может кто-то еще знает практические +/- данного подхода.
Спасибо.
+ Можно быстренько сделать страничку с формой и использовать ее. Правда это здорово если форма простая. - Кастомизация чуть меньше чеи никакая в плане дизайна.
[quote="Art Vegas"]Господа!
Сталкивался тоже с такой дилемой и планировал использовать Flow на одном из проектов для опросника, но!
Опытные товарищи открестились..мол глючное это дело и лучше пойти другими путями....на тот момент меня переубедили...больше не сталкивался с таким вопросом.
wilder, спасибо за еще один ответ по поводу языка.
Может кто-то еще знает практические +/- данного подхода.
Спасибо.[/quote]
+ Можно быстренько сделать страничку с формой и использовать ее. Правда это здорово если форма простая.
- Кастомизация чуть меньше чеи никакая в плане дизайна.
Получается что, чтобы использовать такой Flow на сайте, нужно засадить этот Flow в виде Компонента в какую-то кастомную VF страницу. Но как указать этот Flow в разметке? я не вижу сущетсвующих Flows в разделе VF Components.
Получается что, чтобы использовать такой Flow на сайте, нужно засадить этот Flow в виде Компонента в какую-то кастомную VF страницу. Но как указать этот Flow в разметке? я не вижу сущетсвующих Flows в разделе VF Components.
Получается что, чтобы использовать такой Flow на сайте, нужно засадить этот Flow в виде Компонента в какую-то кастомную VF страницу. Но как указать этот Flow в разметке? я не вижу сущетсвующих Flows в разделе VF Components.
[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 Потока выбирается значение из пик-листа. Мне сейчас нужно полностью воссоздавать этот Пиклист в потоке, назначать его значение в какую-то вновь созданную поточную переменную и позже в момент создания записи передавать эту переменную в пик-листовое поле записи. Двойная работа. Но пока не вижу как это упростить.