среда, 1 апреля 2009 г.

Понимание формата URL в Application Express. Часть 1.

URL, которые отображаются для каждой страницы, однозначно определяют:

  • Адрес Application Express

  • Идентификатор приложения (application ID) - уникальное число, однозначно идентифицирующее приложение. Уникален в рамках рабочей области (workspace)

  • Номер страницы (page number) - число, однозначно идентифицирующее страницу в приложении. Уникально в рамках приложения.

  • Идентификатор сессии (session ID)

Приложения и страницы могут иметь символьные псевдонимы (alphanumeric aliases).Так же, как и идентификаторы приложений и страниц, псевдоним приложения уникален в рамках рабочей области (workspace), а псевдоним страницы уникален в рамках приложения.

При запуске приложения Application Express генерирует идентификатор сессии, который является ключем для доступа к значениям переменных приложения.

Понимание URL для страниц


Все очень просто. Достаточно рассмотреть пример:
http://apex.oracle.com/pls/apex/f?p=4350:1:220883407765693447
где:

  • apex.oracle.com - адрес сервера

  • pls - признак использования mod_plsql

  • apex - название дескриптора доступа к БД (DAD). DAD описывает, как HTTP-сервер соединяется с сервером БД, чтобы обработать HTTP-запрос. Значение по умолчанию - apex.

  • f?p= - префикс, используемый Oracle Application Express

  • 4350 - вызываемое приложение (application ID)

  • 1 - вызываемая страницы приложения(page number)

  • 220883407765693447 - идентификатор сессии(session ID)


Использование синтаксиса "f?p"


Для создания переходов между страницами можно использовать следующий синтаксис:

f?p=App:Page:Session:Request:Debug:ClearCache:itemNames:itemValues:PrinterFriendly


Синтаксис Описание
AppИдентификатор (application ID) или символьный псевдоним (alias) приложения
PageНомер (page number) или символьный псевдоним (alias) страницы
SessionИдентификатор сессии (session ID). Идентификатор сесси имеет смысл указывать в том случае, если создается ссылка на страницу, в которой необходимо использовать теже переменные, что и в текущей странице. Получить значение идентификатор текущей сессии можно следующими способами:

  • Строка подстановки: "&SESSION."
  • PL/SQL: "V('SESSION')"
  • Bind переменная: ":APP_SESSION"
RequestВыставляется при нажатии кнопки на странице приложения. Заполняется именем нажатой кнопки. Получить значение можно следующими способами:
  • Строка подстановки: "&REQUEST."
  • PL/SQL: "V('REQUEST')"
  • Bind переменная: ":REQUEST"
DebugОтвечает за вывод отладочной информации при обработке страницы. Допустимые значения: "NO", "YES". Получить значение можно следующими способами:
  • Строка подстановки: "&DEBUG."
  • PL/SQL: "V('DEBUG')"
  • Bind переменная: ":DEBUG"
ClearCacheОчищает кэш. Выставляет значение указанных переменных в NULL. Пример: f?p=100:5:&APP_SESSION.::NO:THE_EMPNO,THE_DEPTNO Очищает кэш переменных THE_EMPNO и THE_DEPTNO.
Ключевое слово "RP" вызывает сброс навигации (region pagination) на странице. Например:
f?p=6000:6003:&APP_SESSION.::NO:RP,6004,6014
Очищает состояние всех переменных на страницах 6004 и 6014. Сбрасывает состояние навигации (region pagination -RP) на странице 6003.
Ключевое слово "APP" вызывает сброс кэша во всем приложении.
Ключевое слово "SESSION" работает аналогично ключевому слову "APP", за исключением того, что очищает значение переменных, связанных со всеми приложениями, которые были использованы в рамках заданной сессии.
itemNamesСписок переменных через запятую, для которых необходимо выставить значение.
itemValuesСписок значений переменных через запятую. Не допустимо использование двоеточия (:) в качестве значения. Допустимо использование запятой в качестве значения, если значение заключено в обратные слеши (\123,45\).
PrinterFriendlyОпределяет, будет ли страница выведена в режиме "на печать" (значение - "Yes"). Может быть использовано для условного вывода того или иного элемента страницы при выводе на печать. Получить значение можно следующими способом: V('PRINTER_FRIENDLY').
Если задано, то Application Express не будет отображать закладки или навигационные области. Кроме того, все элементы форм будут выводиться как текстовые поля.

Продолжение следует...

3 комментария:

Анонимный комментирует...

Огромное спасибо за столь краткое и четкое изложение этой информации

Анонимный комментирует...

свершилось! на третий базар я стала понимать что говорят мне продавцы )))
многие просто говорят только на турецком, раньше объяснялись на пальцах
из экзотических продуктов почти все опознали
Generic Viagra
Viagra Online
Buy Viagra

Unknown комментирует...

У меня не проходит редирект по ссылке вида f?p=&APP_ID.:17:&SESSION.:CSV::::
До последнего обновления хрома было все нормально. В связи с этим вопрос: есть ли в APEX переменная, которая бы содержала адрес сайта (всё до f?p)?