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

Remote Actions and Iframe

Привет.
Сегодня столкнулся с одним непонятным и неприятным ограничением Salesforce.
Делаю страницу для пакета с remote actions. Все отлично, разработка полным ходом, результат как всегда радует и тут последний штрих - вставить страницу в iframe в другую страницу. И о чудо, мля. Выскакивает такое замечательное предупреждение:
Javascript proxies were not generated for controller myController : may not use public remoted methods inside an iframe
Что это? Моя страница не может использовать свои же remote actions если находится внутри iframe. Как это понимать?
Пошел гуглить и оказалось - это стандартное ограничение SF

Решение простое - сделать global и забыть о проблеме. Не тут то было - теперь надо решать это с заказчиком, потому что он против глобальных классов и методов в пакете (по вполне понятным причинам).
Вот такой геморрой очередной раз подкинул SF.

Привет.
Сегодня столкнулся с одним непонятным и неприятным ограничением Salesforce.
Делаю страницу для пакета с remote actions. Все отлично, разработка полным ходом, результат как всегда радует и тут последний штрих - вставить страницу в iframe в другую страницу. И о чудо, мля. Выскакивает такое замечательное предупреждение:
[b]Javascript proxies were not generated for controller myController : may not use public remoted methods inside an iframe[/b]
Что это? Моя страница не может использовать свои же remote actions если находится внутри iframe. Как это понимать?
Пошел гуглить и оказалось - это стандартное ограничение SF
[img]/pics/31/original_2015-03-15_22-12-41.png[/img]

Решение простое - сделать global и забыть о проблеме. Не тут то было - теперь надо решать это с заказчиком, потому что он против глобальных классов и методов в пакете (по вполне понятным причинам).
Вот такой геморрой очередной раз подкинул SF.

Dmitry Shnyrev
Вот такой геморрой очередной раз подкинул SF.

По этой причине так же отказался от Remote Action в пакете.

[quote="Dmitry Shnyrev"]Вот такой геморрой очередной раз подкинул SF.[/quote]

По этой причине так же отказался от Remote Action в пакете.

Dmitry Shnyrev
Привет.
Сегодня столкнулся с одним непонятным и неприятным ограничением Salesforce.
Делаю страницу для пакета с remote actions. Все отлично, разработка полным ходом, результат как всегда радует и тут последний штрих - вставить страницу в iframe в другую страницу. И о чудо, мля. Выскакивает такое замечательное предупреждение:
Javascript proxies were not generated for controller myController : may not use public remoted methods inside an iframe
Что это? Моя страница не может использовать свои же remote actions если находится внутри iframe. Как это понимать?
Пошел гуглить и оказалось - это стандартное ограничение SF

Решение простое - сделать global и забыть о проблеме. Не тут то было - теперь надо решать это с заказчиком, потому что он против глобальных классов и методов в пакете (по вполне понятным причинам).
Вот такой геморрой очередной раз подкинул SF.


Тебе нужен именно RemoteAction?

[quote="Dmitry Shnyrev"]Привет.
Сегодня столкнулся с одним непонятным и неприятным ограничением Salesforce.
Делаю страницу для пакета с remote actions. Все отлично, разработка полным ходом, результат как всегда радует и тут последний штрих - вставить страницу в iframe в другую страницу. И о чудо, мля. Выскакивает такое замечательное предупреждение:
[b]Javascript proxies were not generated for controller myController : may not use public remoted methods inside an iframe[/b]
Что это? Моя страница не может использовать свои же remote actions если находится внутри iframe. Как это понимать?
Пошел гуглить и оказалось - это стандартное ограничение SF
[img]/pics/31/original_2015-03-15_22-12-41.png[/img]

Решение простое - сделать global и забыть о проблеме. Не тут то было - теперь надо решать это с заказчиком, потому что он против глобальных классов и методов в пакете (по вполне понятным причинам).
Вот такой геморрой очередной раз подкинул SF.[/quote]
Тебе нужен именно RemoteAction?

Догадывался что ты этот вопрос задашь
Ну я привык их использовать, до этого момента проблем не испытывал
Плюс не стоит беспокоиться о лимитах на API calls в случае web services.

Вообще iframe крайне редко использую, если он есть, значит уже страница на костылях. Но тут приходится мириться с решениями заказчика. Вот хочет он запихнуть сложную страницу в Modal popup (js решение). Самый простой вариант чтобы не смешивать две страницы - iframe. Но по ходу неудачно. Решил проблему с помощью <apex:include> теперь будем надеяться что злой JS двух страниц не сломается (пока с виду все работает)

Догадывался что ты этот вопрос задашь :) 
Ну я привык их использовать, до этого момента проблем не испытывал
Плюс не стоит беспокоиться о лимитах на API calls в случае web services.

Вообще iframe крайне редко использую, если он есть, значит уже страница на костылях. Но тут приходится мириться с решениями заказчика. Вот хочет он запихнуть сложную страницу в Modal popup (js решение). Самый простой вариант чтобы не смешивать две страницы - iframe. Но по ходу неудачно. Решил проблему с помощью <apex:include> теперь будем надеяться что злой JS двух страниц не сломается :) (пока с виду все работает)

Dmitry Shnyrev
Догадывался что ты этот вопрос задашь
Ну я привык их использовать, до этого момента проблем не испытывал
Плюс не стоит беспокоиться о лимитах на API calls в случае web services.

Вообще iframe крайне редко использую, если он есть, значит уже страница на костылях. Но тут приходится мириться с решениями заказчика. Вот хочет он запихнуть сложную страницу в Modal popup (js решение). Самый простой вариант чтобы не смешивать две страницы - iframe. Но по ходу неудачно. Решил проблему с помощью <apex:include> теперь будем надеяться что злой JS двух страниц не сломается (пока с виду все работает)


Я просто я в последнее время использую обычный контроллер для ajax запросов.

[quote="Dmitry Shnyrev"]Догадывался что ты этот вопрос задашь :) 
Ну я привык их использовать, до этого момента проблем не испытывал
Плюс не стоит беспокоиться о лимитах на API calls в случае web services.

Вообще iframe крайне редко использую, если он есть, значит уже страница на костылях. Но тут приходится мириться с решениями заказчика. Вот хочет он запихнуть сложную страницу в Modal popup (js решение). Самый простой вариант чтобы не смешивать две страницы - iframe. Но по ходу неудачно. Решил проблему с помощью <apex:include> теперь будем надеяться что злой JS двух страниц не сломается :) (пока с виду все работает)[/quote]
Я просто я в последнее время использую обычный контроллер для ajax запросов.

Это как? Что значит обычный контроллер для ajax запросов?
Ну и я использую обычный контроллер - складываю туда remote actions и использую их для запросов.

Это как? Что значит обычный контроллер для ajax запросов?
Ну и я использую обычный контроллер - складываю туда remote actions и использую их для запросов.

Dmitry Shnyrev
Это как? Что значит обычный контроллер для ajax запросов?
Ну и я использую обычный контроллер - складываю туда remote actions и использую их для запросов.

Gres наверное имеет ввиду REST

[quote="Dmitry Shnyrev"]Это как? Что значит обычный контроллер для ajax запросов?
Ну и я использую обычный контроллер - складываю туда remote actions и использую их для запросов.[/quote]

Gres наверное имеет ввиду REST

Мне больше кажется что Gres имел в виду стандартный rerender.

Мне больше кажется что Gres имел в виду стандартный rerender.

Dmitry Shnyrev
Это как? Что значит обычный контроллер для ajax запросов?
Ну и я использую обычный контроллер - складываю туда remote actions и использую их для запросов.

Я уже писал где-то.
Создаешь пустую страничку с content-type = 'application/json', добавляешь туда outputText.
Создаешь контроллер к ней.

Теперь ты можешь сделать ajax запрос

$.post( 
"{!Page.MyAjaxPage}",
{ method: "firstMethod", param1: "Test", param2: 1 }
);

В контроллере ты можешь поймать переданные параметры и забиндить ответ на твой outputText.
В итоге ты получаешь удобный инструмент для ajax запросов, который не затрагивает лимиты по API Call.
А чтобы в контроллере не писать ветвление по методам стоит воспользоваться преимуществами наследования.
Если кому-то интересно, могу написать статью с примером такой архитектуры.

[quote="Dmitry Shnyrev"]Это как? Что значит обычный контроллер для ajax запросов?
Ну и я использую обычный контроллер - складываю туда remote actions и использую их для запросов.[/quote]
Я уже писал где-то.
Создаешь пустую страничку с content-type = 'application/json', добавляешь туда outputText. 
Создаешь контроллер к ней.

Теперь ты можешь сделать ajax запрос
[code]
$.post( 
    "{!Page.MyAjaxPage}", 
     { method: "firstMethod", param1: "Test", param2: 1 } 
);
[/code]

В контроллере ты можешь поймать переданные параметры и забиндить ответ на твой outputText.
В итоге ты получаешь удобный инструмент для ajax запросов, который не затрагивает лимиты по API Call.
А чтобы в контроллере не писать ветвление по методам стоит воспользоваться преимуществами наследования.
Если кому-то интересно, могу написать статью с примером такой архитектуры.


Maxim Elets
Gres наверное имеет ввиду REST

Нет)

[quote="Maxim Elets"]Gres наверное имеет ввиду REST[/quote]
Нет)

Dmitry Shnyrev
Мне больше кажется что Gres имел в виду стандартный rerender.

И снова нет)

[quote="Dmitry Shnyrev"]Мне больше кажется что Gres имел в виду стандартный rerender.[/quote]
И снова нет)

Gres
$.post(
"{!Page.MyAjaxPage}",
{ method: "firstMethod", param1: "Test", param2: 1 }
);

а, дада, пользовался таким когда-то, на новом проекте прижилось, а вот на старых все по старинке)

[quote="Gres"]$.post( 
    "{!Page.MyAjaxPage}", 
     { method: "firstMethod", param1: "Test", param2: 1 } 
);[/quote]

а, дада, пользовался таким когда-то, на новом проекте прижилось, а вот на старых все по старинке)

Млин, а не помню я этого метода!!! Может пропустил мимо ушей.
Если не сложно, напиши статью. Я могу помочь ее здесь опубликовать.
Ну или дай ссылку, если сам куда выложишь.
У меня руки уже зачесались этим воспользоваться.
Но хочу сперва увидеть твой пример, особенно с "преимуществами наследования"

Млин, а не помню я этого метода!!! Может пропустил мимо ушей.
Если не сложно, напиши статью. Я могу помочь ее здесь опубликовать.
Ну или дай ссылку, если сам куда выложишь.
У меня руки уже зачесались этим воспользоваться.
Но хочу сперва увидеть твой пример, особенно с "преимуществами наследования"

Maxim Elets
Gres
$.post(
"{!Page.MyAjaxPage}",
{ method: "firstMethod", param1: "Test", param2: 1 }
);

а, дада, пользовался таким когда-то, на новом проекте прижилось, а вот на старых все по старинке)


А все потому что это гибко, просто, расширяемо :)

[quote="Maxim Elets"][quote="Gres"]$.post( 
    "{!Page.MyAjaxPage}", 
     { method: "firstMethod", param1: "Test", param2: 1 } 
);[/quote]

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

Меня единственно смущает.
А POST запрос Visualforce странице разве не используется для внутренних целей самим SF? Ну там для передачи view state и восстановления состояния контроллера? Вроде же нельзя напрямую делать POST запросы к страницам.
Или ты просто проверил и заработало и так и пользуешься?

Меня единственно смущает. 
А POST запрос Visualforce странице разве не используется для внутренних целей самим SF? Ну там для передачи view state и восстановления состояния контроллера? Вроде же нельзя напрямую делать POST запросы к страницам.
Или ты просто проверил и заработало и так и пользуешься?

Dmitry Shnyrev
Меня единственно смущает.
А POST запрос Visualforce странице разве не используется для внутренних целей самим SF? Ну там для передачи view state и восстановления состояния контроллера? Вроде же нельзя напрямую делать POST запросы к страницам.
Или ты просто проверил и заработало и так и пользуешься?

POST запросы прекрасно работают

[quote="Dmitry Shnyrev"]Меня единственно смущает. 
А POST запрос Visualforce странице разве не используется для внутренних целей самим SF? Ну там для передачи view state и восстановления состояния контроллера? Вроде же нельзя напрямую делать POST запросы к страницам.
Или ты просто проверил и заработало и так и пользуешься?[/quote]
POST запросы прекрасно работают

А как данные из пост запроса в контроллере получить?
Нужна статья от тебя :))))))))) Пока я открыл для себя новую тему - post запросы в SF.
До этого я думал что их не существует для меня как разработчика в VF страницах.

А как данные из пост запроса в контроллере получить?
Нужна статья от тебя :))))))))) Пока я открыл для себя новую тему - post запросы в SF.
До этого я думал что их не существует для меня как разработчика в VF страницах.

Dmitry Shnyrev
А как данные из пост запроса в контроллере получить?
Нужна статья от тебя :))))))))) Пока я открыл для себя новую тему - post запросы в SF.
До этого я думал что их не существует для меня как разработчика в VF страницах.

Параметры? - getParameters()

Пользуйся)

[quote="Dmitry Shnyrev"]А как данные из пост запроса в контроллере получить?
Нужна статья от тебя :))))))))) Пока я открыл для себя новую тему - post запросы в SF.
До этого я думал что их не существует для меня как разработчика в VF страницах.[/quote]
Параметры? - [url=https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_System_PageReference_getParameters.htm]getParameters()[/url]

Пользуйся) 

??? ну я знаю про это
Returns a map of the query string parameters that are included in the page URL
А как же параметры в теле POST запроса? Или ты передаешь параметры как GET?

??? ну я знаю про это
[b]Returns a map of the query string parameters that are included in the page URL[/b]
А как же параметры в теле POST запроса? Или ты передаешь параметры как GET?

Dmitry Shnyrev
??? ну я знаю про это
Returns a map of the query string parameters that are included in the page URL
А как же параметры в теле POST запроса? Или ты передаешь параметры как GET?

в getparameters лежат и пост параметры и гет праметры, так что никаких проблем)

[quote="Dmitry Shnyrev"]??? ну я знаю про это
[b]Returns a map of the query string parameters that are included in the page URL[/b]
А как же параметры в теле POST запроса? Или ты передаешь параметры как GET?[/quote]

в getparameters лежат и пост параметры и гет праметры, так что никаких проблем)

даже можно вытягивать данные из формы при post. можно напилять тупо стандартных тегов инпут с name="" и доставать из этой мапы по name параетры

даже можно вытягивать данные из формы при post. можно напилять тупо стандартных тегов инпут с name="" и доставать из этой мапы по name параетры

Maxim Elets
Dmitry Shnyrev
??? ну я знаю про это
Returns a map of the query string parameters that are included in the page URL
А как же параметры в теле POST запроса? Или ты передаешь параметры как GET?

в getparameters лежат и пост параметры и гет праметры, так что никаких проблем)


Максим абсолютно прав

[quote="Maxim Elets"][quote="Dmitry Shnyrev"]??? ну я знаю про это
[b]Returns a map of the query string parameters that are included in the page URL[/b]
А как же параметры в теле POST запроса? Или ты передаешь параметры как GET?[/quote]

в getparameters лежат и пост параметры и гет праметры, так что никаких проблем)[/quote]
Максим абсолютно прав

Maxim Elets
даже можно вытягивать данные из формы при post. можно напилять тупо стандартных тегов инпут с name="" и доставать из этой мапы по name параетры

Сабмит формы - обычный пост запрос

[quote="Maxim Elets"]даже можно вытягивать данные из формы при post. можно напилять тупо стандартных тегов инпут с name="" и доставать из этой мапы по name параетры[/quote]
Сабмит формы - обычный пост запрос

Gres
Maxim Elets
даже можно вытягивать данные из формы при post. можно напилять тупо стандартных тегов инпут с name="" и доставать из этой мапы по name параетры

Сабмит формы - обычный пост запрос

ну я про это и говорю

[quote="Gres"][quote="Maxim Elets"]даже можно вытягивать данные из формы при post. можно напилять тупо стандартных тегов инпут с name="" и доставать из этой мапы по name параетры[/quote]
Сабмит формы - обычный пост запрос[/quote]
ну я про это и говорю

круто! не знал!!! Теперь у меня куча идей в голове зарождается.
Прямо руки развязали, парни! Спасибо!

:D круто! не знал!!! Теперь у меня куча идей в голове зарождается.
Прямо руки развязали, парни! Спасибо!

Dmitry Shnyrev
:D круто! не знал!!! Теперь у меня куча идей в голове зарождается.
Прямо руки развязали, парни! Спасибо!

Мы сделали твой день?

[quote="Dmitry Shnyrev"]:D круто! не знал!!! Теперь у меня куча идей в голове зарождается.
Прямо руки развязали, парни! Спасибо![/quote]
Мы сделали твой день?

Однозначно!!!! :))))))))

Однозначно!!!! :)))))))) 

Жаль по интернет нельзя пиво передать

Жаль по интернет нельзя пиво передать :D 

Вот в чем польза таких форумов! Сегодня опять столкнулся с этой проблемой и вспомнил что когда-то уже на форуме обсуждали. 10 сек поиска и рефреш в памяти А тема аж 2015 года Во время летит. Все новое хорошо забытое старое

Вот в чем польза таких форумов! Сегодня опять столкнулся с этой проблемой и вспомнил что когда-то уже на форуме обсуждали. 10 сек поиска и рефреш в памяти :D А тема аж 2015 года :o Во время летит. Все новое хорошо забытое старое :D