Привет. Сегодня столкнулся с одним непонятным и неприятным ограничением 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.
По этой причине так же отказался от Remote Action в пакете.
[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 двух страниц не сломается :) (пока с виду все работает)
Я просто я в последнее время использую обычный контроллер для ajax запросов.
[quote="Dmitry Shnyrev"]Догадывался что ты этот вопрос задашь :)
Ну я привык их использовать, до этого момента проблем не испытывал
Плюс не стоит беспокоиться о лимитах на API calls в случае web services.
Вообще iframe крайне редко использую, если он есть, значит уже страница на костылях. Но тут приходится мириться с решениями заказчика. Вот хочет он запихнуть сложную страницу в Modal popup (js решение). Самый простой вариант чтобы не смешивать две страницы - iframe. Но по ходу неудачно. Решил проблему с помощью <apex:include> теперь будем надеяться что злой JS двух страниц не сломается :) (пока с виду все работает)[/quote]
Я просто я в последнее время использую обычный контроллер для ajax запросов.
Это как? Что значит обычный контроллер для ajax запросов? Ну и я использую обычный контроллер - складываю туда remote actions и использую их для запросов.
Это как? Что значит обычный контроллер для ajax запросов?
Ну и я использую обычный контроллер - складываю туда remote actions и использую их для запросов.
[quote="Dmitry Shnyrev"]Это как? Что значит обычный контроллер для ajax запросов?
Ну и я использую обычный контроллер - складываю туда remote actions и использую их для запросов.[/quote]
Gres наверное имеет ввиду REST
Мне больше кажется что Gres имел в виду стандартный rerender.
В контроллере ты можешь поймать переданные параметры и забиндить ответ на твой 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.
А чтобы в контроллере не писать ветвление по методам стоит воспользоваться преимуществами наследования.
Если кому-то интересно, могу написать статью с примером такой архитектуры.
[quote="Gres"]$.post(
"{!Page.MyAjaxPage}",
{ method: "firstMethod", param1: "Test", param2: 1 }
);[/quote]
а, дада, пользовался таким когда-то, на новом проекте прижилось, а вот на старых все по старинке)
Млин, а не помню я этого метода!!! Может пропустил мимо ушей. Если не сложно, напиши статью. Я могу помочь ее здесь опубликовать. Ну или дай ссылку, если сам куда выложишь. У меня руки уже зачесались этим воспользоваться. Но хочу сперва увидеть твой пример, особенно с "преимуществами наследования"
Млин, а не помню я этого метода!!! Может пропустил мимо ушей.
Если не сложно, напиши статью. Я могу помочь ее здесь опубликовать.
Ну или дай ссылку, если сам куда выложишь.
У меня руки уже зачесались этим воспользоваться.
Но хочу сперва увидеть твой пример, особенно с "преимуществами наследования"
[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 запросы к страницам.
Или ты просто проверил и заработало и так и пользуешься?
Меня единственно смущает. А POST запрос Visualforce странице разве не используется для внутренних целей самим SF? Ну там для передачи view state и восстановления состояния контроллера? Вроде же нельзя напрямую делать POST запросы к страницам. Или ты просто проверил и заработало и так и пользуешься?
[quote="Dmitry Shnyrev"]Меня единственно смущает.
А POST запрос Visualforce странице разве не используется для внутренних целей самим SF? Ну там для передачи view state и восстановления состояния контроллера? Вроде же нельзя напрямую делать POST запросы к страницам.
Или ты просто проверил и заработало и так и пользуешься?[/quote]
POST запросы прекрасно работают
А как данные из пост запроса в контроллере получить? Нужна статья от тебя :))))))))) Пока я открыл для себя новую тему - post запросы в SF. До этого я думал что их не существует для меня как разработчика в VF страницах.
А как данные из пост запроса в контроллере получить?
Нужна статья от тебя :))))))))) Пока я открыл для себя новую тему - post запросы в SF.
До этого я думал что их не существует для меня как разработчика в VF страницах.
А как данные из пост запроса в контроллере получить? Нужна статья от тебя :))))))))) Пока я открыл для себя новую тему - post запросы в SF. До этого я думал что их не существует для меня как разработчика в VF страницах.
[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?
??? ну я знаю про это 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 параетры
??? ну я знаю про это 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]
Максим абсолютно прав
даже можно вытягивать данные из формы при post. можно напилять тупо стандартных тегов инпут с name="" и доставать из этой мапы по name параетры
[quote="Maxim Elets"]даже можно вытягивать данные из формы при post. можно напилять тупо стандартных тегов инпут с name="" и доставать из этой мапы по name параетры[/quote]
Сабмит формы - обычный пост запрос
даже можно вытягивать данные из формы при post. можно напилять тупо стандартных тегов инпут с name="" и доставать из этой мапы по name параетры
[quote="Gres"][quote="Maxim Elets"]даже можно вытягивать данные из формы при post. можно напилять тупо стандартных тегов инпут с name="" и доставать из этой мапы по name параетры[/quote]
Сабмит формы - обычный пост запрос[/quote]
ну я про это и говорю
круто! не знал!!! Теперь у меня куча идей в голове зарождается. Прямо руки развязали, парни! Спасибо!
[quote="Dmitry Shnyrev"]:D круто! не знал!!! Теперь у меня куча идей в голове зарождается.
Прямо руки развязали, парни! Спасибо![/quote]
Мы сделали твой день?
Вот в чем польза таких форумов! Сегодня опять столкнулся с этой проблемой и вспомнил что когда-то уже на форуме обсуждали. 10 сек поиска и рефреш в памяти А тема аж 2015 года Во время летит. Все новое хорошо забытое старое
Вот в чем польза таких форумов! Сегодня опять столкнулся с этой проблемой и вспомнил что когда-то уже на форуме обсуждали. 10 сек поиска и рефреш в памяти :D А тема аж 2015 года :o Во время летит. Все новое хорошо забытое старое :D