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

Как заставить контроллер действовать по разному на разных страницах, не передавая ему УРЛ параметра?

всем привет

набор ВФ страниц рендерит выборочный список записей какого-то объекта.

я хочу использовать для всех них один контроллер.

но ему нужно объяснить какие именно записи кверить.

для этого нужно писать параметр в УРЛ. но не хочу так, просто глупо будет:

/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 хидером сложновато для меня будет...

спасибо

Den Brown
Mike V
HTTP Header?

сложновато для меня. я HTTP Header от HTML Header и от SOAP Header не так уж и давно начал ясно различать...

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, а может и нет - вот это тоже еще не разобрал).

правильно думаю?

спасибо

Den Brown
В чем отличие между REST web-service и REST API?

Мне кажется это одно и тоже только названо по-разному.

Den Brown
ночью спал и думал, про "HTTP Header, HTML Header,SOAP Header" и потом осознал, что в TCP/IP тоже есть свой Header, а в оборачивающих его протоколах - свои хидеры... Просто матрешка...

Какие TCP/IP, какие Header в Salesforce?
Ты вроде спрашивал про "Как заставить контроллер действовать по разному на разных страницах, не передавая ему УРЛ параметра?" Контроллере мы имеем доступ только к параметрам Get запроса. Остальное (post запросы, headers) спрятано от нас в недрах Salesforce.

Если нужны хедеры и другие типы запросов это уже не контроллер, а веб-сервис.

[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.

Если нужны хедеры и другие типы запросов это уже не контроллер, а веб-сервис.

Dmitry Shnyrev
Какие 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 Круто, но нафиг не нужно.

Dmitry Shnyrev
В общем использовать TCP/IP в сетевом программировании - это тоже самое что программировать на Assembler в современном мире Круто, но нафиг не нужно.

Unless вы пишете что-то такое, что должно передавать данные по сети сильно быстро.

[quote="Dmitry Shnyrev"]В общем использовать TCP/IP в сетевом программировании - это тоже самое что программировать на Assembler в современном мире :D Круто, но нафиг не нужно.[/quote]

Unless вы пишете что-то такое, что должно передавать данные по сети сильно быстро.

Den Brown
я подумал может сделать набор init() методов, какждый из которых вызывает квери метод с нужным условием, и этот нужный init() метод поставить на action атрибут на страницу?

А я вообще жесточайше против подхода когда один контроллер с 100500 инитами юзается на 100500 страницах.

[quote="Den Brown"]я подумал может сделать набор init() методов, какждый из которых вызывает квери метод с нужным условием, и этот нужный init() метод поставить на action атрибут на страницу?[/quote]

А я вообще жесточайше против подхода когда один контроллер с 100500 инитами юзается на 100500 страницах.

Maxim Elets
А я вообще жесточайше против подхода когда один контроллер с 100500 инитами юзается на 100500 страницах.

Поддерживаю!

[quote="Maxim Elets"]А я вообще жесточайше против подхода когда один контроллер с 100500 инитами юзается на 100500 страницах.[/quote]
Поддерживаю!