всем привет
набор ВФ страниц рендерит выборочный список записей какого-то объекта.
я хочу использовать для всех них один контроллер.
но ему нужно объяснить какие именно записи кверить.
для этого нужно писать параметр в УРЛ. но не хочу так, просто глупо будет:
/apex/toytota?what=toyota
но как контроллеру передать инфу без параметра? взять просто подстроку из УРЛ?
я подумал может сделать набор init() методов, какждый из которых вызывает квери метод с нужным условием, и этот нужный init() метод поставить на action атрибут на страницу?
(можно вообще сделать одну ВФ страницу, и в нее все-таки передавать УРЛ параметр, но пока так вопрос не стоит)
спасибо
всем привет набор ВФ страниц рендерит выборочный список записей какого-то объекта. я хочу использовать для всех них один контроллер. но ему нужно объяснить какие именно записи кверить. для этого нужно писать параметр в УРЛ. но не хочу так, просто глупо будет: /apex/toytota?what=toyota но как контроллеру передать инфу без параметра? взять просто подстроку из УРЛ? я подумал может сделать набор init() методов, какждый из которых вызывает квери метод с нужным условием, и этот нужный init() метод поставить на action атрибут на страницу? (можно вообще сделать одну ВФ страницу, и в нее все-таки передавать УРЛ параметр, но пока так вопрос не стоит) спасибо
эх жаль в action="{!init} нельзя вложить параметр, только разные init-ы...
эх жаль в action="{!init} нельзя вложить параметр, только разные init-ы...
HTTP Header?
HTTP Header?
c HTTP хидером сложновато для меня будет...
спасибо
c HTTP хидером сложновато для меня будет... спасибо
public with sharing class multifunc {public multifunc() {
PageReference Cp = System.currentPageReference();
String URL = cp.getUrl();
//в зависимости от URL делай что тебе нужно
}
}
[quote="Den Brown"][quote="Mike V"]HTTP Header?[/quote] сложновато для меня. я HTTP Header от HTML Header и от SOAP Header не так уж и давно начал ясно различать...[/quote] [code] public with sharing class multifunc { public multifunc() { PageReference Cp = System.currentPageReference(); String URL = cp.getUrl(); //в зависимости от URL делай что тебе нужно } } [/code]
В-общем, выцарапывать инфу из УРЛа.
но я с разными инит экшин сделал. вроде аккуратно выглядит.
В-общем, выцарапывать инфу из УРЛа. но я с разными инит экшин сделал. вроде аккуратно выглядит.
Передавать значения в GET это нормальная практика - весь мир этим пользуется. Так что не вижу в это ничего страшного. Тем более в этом есть огромный плюс - такой URL (с GET-параметром) можно скопировать и передать простым текстом (например в email) и человек по этому URL попадет именно на "нужную" страницу. В Salesforce нет наверное больше "нормальных" возможностей это сделать - POST используется для передачи view state, про другие типы запросов ничего не скажу.
Как вариант - запихивать параметр в cookie на странице и делать reload. В конструкторе выбирать нужную куку и если там будет валидный параметр выводить данные, иначе по дефолту.
Передавать значения в GET это нормальная практика - весь мир этим пользуется. Так что не вижу в это ничего страшного. Тем более в этом есть огромный плюс - такой URL (с GET-параметром) можно скопировать и передать простым текстом (например в email) и человек по этому URL попадет именно на "нужную" страницу. В Salesforce нет наверное больше "нормальных" возможностей это сделать - POST используется для передачи view state, про другие типы запросов ничего не скажу. Как вариант - запихивать параметр в cookie на странице и делать reload. В конструкторе выбирать нужную куку и если там будет валидный параметр выводить данные, иначе по дефолту.
спасибо за ответы.
ночью спал и думал, про "HTTP Header, HTML Header,SOAP Header" и потом осознал, что в TCP/IP тоже есть свой Header, а в оборачивающих его протоколах - свои хидеры... Просто матрешка...
ну ладно, раз заговорили о принципах передачи данных по сети, у меня к вам один тонкий вопрос, который я не могу с уверенностью понять.
В чем отличие между REST web-service и REST API?
Как я понимаю, принцип работы и структура сообщений - одинакова. Отличие может лежать только в принципиально разной организации доступа к данному функционал. У REST web-service - клиентом может быть любой (или не любой - как организовано), а вот у REST API всегда нужна авторизация - и именно это требует дополнительных настроек как в Орге, так и на клиенте. Получается, что пользование Оргом по REST API - это тоже самое, что обычное пользование юзером Орга, просто юзер шлет не стандартные HTTP запросы - а "рестофицирование", а сервер в ответ шлет не HTML разметку, а REST сообщение, которые по содержанию просто JSON строки (может обернутые в XML, а может и нет - вот это тоже еще не разобрал).
правильно думаю?
спасибо
спасибо за ответы. ночью спал и думал, про "HTTP Header, HTML Header,SOAP Header" и потом осознал, что в TCP/IP тоже есть свой Header, а в оборачивающих его протоколах - свои хидеры... Просто матрешка... ну ладно, раз заговорили о принципах передачи данных по сети, у меня к вам один тонкий вопрос, который я не могу с уверенностью понять. [i]В чем отличие между REST web-service и REST API? [/i] Как я понимаю, принцип работы и структура сообщений - одинакова. Отличие может лежать только в принципиально разной организации доступа к данному функционал. У REST web-service - клиентом может быть любой (или не любой - как организовано), а вот у REST API всегда нужна авторизация - и именно это требует дополнительных настроек как в Орге, так и на клиенте. Получается, что пользование Оргом по REST API - это тоже самое, что обычное пользование юзером Орга, просто юзер шлет не стандартные HTTP запросы - а "рестофицирование", а сервер в ответ шлет не HTML разметку, а REST сообщение, которые по содержанию просто JSON строки (может обернутые в XML, а может и нет - вот это тоже еще не разобрал). правильно думаю? спасибо
В чем отличие между REST web-service и REST API?
ночью спал и думал, про "HTTP Header, HTML Header,SOAP Header" и потом осознал, что в TCP/IP тоже есть свой Header, а в оборачивающих его протоколах - свои хидеры... Просто матрешка...
Если нужны хедеры и другие типы запросов это уже не контроллер, а веб-сервис.
[quote="Den Brown"]В чем отличие между REST web-service и REST API?[/quote] Мне кажется это одно и тоже только названо по-разному. [quote="Den Brown"]ночью спал и думал, про "HTTP Header, HTML Header,SOAP Header" и потом осознал, что в TCP/IP тоже есть свой Header, а в оборачивающих его протоколах - свои хидеры... Просто матрешка...[/quote] Какие TCP/IP, какие Header в Salesforce? Ты вроде спрашивал про "Как заставить контроллер действовать по разному на разных страницах, не передавая ему УРЛ параметра?" Контроллере мы имеем доступ только к параметрам Get запроса. Остальное (post запросы, headers) спрятано от нас в недрах Salesforce. Если нужны хедеры и другие типы запросов это уже не контроллер, а веб-сервис.
Какие TCP/IP, какие Header в Salesforce?
это я уже переключился на другую тему про структуру сообщений, передаваемых по интернету...
[quote="Dmitry Shnyrev"]Какие TCP/IP, какие Header в Salesforce? [/quote] это я уже переключился на другую тему про структуру сообщений, передаваемых по интернету...
Значит ты на очень низкий уровень переключился :). Там тема намного больше и сложнее всего Salesforce :). Всё, что знают и используют 99% программистов, это протокол http. Все SOAP, REST строятся на основе http протокола. Просто мы привыкли ассоциировать интернет с http потому что браузеры работают на его основе. Но на самом деле все намного сложнее в этом мире
http://en.wikipedia.org/wiki/Application_layer найде среди протоколов http :)
Значит ты на очень низкий уровень переключился :). Там тема намного больше и сложнее всего Salesforce :). Всё, что знают и используют 99% программистов, это протокол http. Все SOAP, REST строятся на основе http протокола. Просто мы привыкли ассоциировать интернет с http потому что браузеры работают на его основе. Но на самом деле все намного сложнее в этом мире :) http://en.wikipedia.org/wiki/Application_layer найде среди протоколов http :)
до TCP Header в Salesforce добраться не получится, и, я бы сказал, что на других платформах это будет не проще. Как правильно заметил Дмитрий, это уж больно низкий уровень.
до TCP Header в Salesforce добраться не получится, и, я бы сказал, что на других платформах это будет не проще. Как правильно заметил Дмитрий, это уж больно низкий уровень.
Я помню в своей молодости, когда еще ничего не знал про Интернет, http и сети, купил себе вот такой вот "кирпич"
Протоколы TCP/IP. Практическое руководство.
на хренову тучу страниц. Было конечно классно осознавать себя владельцем столько фундаментального источника знаний, только вот кроме как чтения первых глав и ощущением полного вакуума в голове я дальше не ушел
Я помню в своей молодости, когда еще ничего не знал про Интернет, http и сети, купил себе вот такой вот "кирпич" [url=http://rutracker.org/forum/viewtopic.php?t=4770197]Протоколы TCP/IP. Практическое руководство[/url]. на хренову тучу страниц. Было конечно классно осознавать себя владельцем столько фундаментального источника знаний, только вот кроме как чтения первых глав и ощущением полного вакуума в голове я дальше не ушел :)
В общем использовать TCP/IP в сетевом программировании - это тоже самое что программировать на Assembler в современном мире Круто, но нафиг не нужно.
В общем использовать TCP/IP в сетевом программировании - это тоже самое что программировать на Assembler в современном мире :D Круто, но нафиг не нужно.
В общем использовать TCP/IP в сетевом программировании - это тоже самое что программировать на Assembler в современном мире Круто, но нафиг не нужно.
Unless вы пишете что-то такое, что должно передавать данные по сети сильно быстро.
[quote="Dmitry Shnyrev"]В общем использовать TCP/IP в сетевом программировании - это тоже самое что программировать на Assembler в современном мире :D Круто, но нафиг не нужно.[/quote] Unless вы пишете что-то такое, что должно передавать данные по сети сильно быстро.
я подумал может сделать набор init() методов, какждый из которых вызывает квери метод с нужным условием, и этот нужный init() метод поставить на action атрибут на страницу?
А я вообще жесточайше против подхода когда один контроллер с 100500 инитами юзается на 100500 страницах.
[quote="Den Brown"]я подумал может сделать набор init() методов, какждый из которых вызывает квери метод с нужным условием, и этот нужный init() метод поставить на action атрибут на страницу?[/quote] А я вообще жесточайше против подхода когда один контроллер с 100500 инитами юзается на 100500 страницах.
А я вообще жесточайше против подхода когда один контроллер с 100500 инитами юзается на 100500 страницах.
[quote="Maxim Elets"]А я вообще жесточайше против подхода когда один контроллер с 100500 инитами юзается на 100500 страницах.[/quote] Поддерживаю!