Seaside - как получить полный URL-адрес во время сеанса

Я разрабатываю приложение, которое будет обслуживать несколько организаций-клиентов, каждой из них должен быть предоставлен доступ на основе фиксированного URL-адреса. Пример: domain/myapp/CustomerOrg1

Раньше я всегда регистрировал новый подкласс WAComponent для каждой из этих точек входа. Это работает, но должно быть лучшее решение, я хотел бы, чтобы один класс компонентов узнал, какой URL-адрес использует запрос (чтобы затем ответить на домашнюю страницу клиентской организации)

Я старался:

  • регистрация подкласса WARequestHandler; и это позволяет мне узнать полный путь (включая /CustomerOrg1), но я нахожусь вне какой-либо сессии и не знаю, как войти в нее.

  • регистрируя подкласс WAComponent как /myapp, и он работает в том смысле, что он также автоматически обрабатывает /myapp/CustomerOrg1, однако, когда я пытаюсь узнать используемый URL-адрес (self session url inspect), он утверждает, что это только базовый URL-адрес (/myapp).


person ben    schedule 26.11.2013    source источник


Ответы (2)


Пытаться

self requestContext request uri

и если вы находитесь не в компоненте, а в любом объекте, вы можете сделать

WACurrentRequestContext value request uri
person Norbert Hartl    schedule 26.11.2013

Имейте в виду, что uri, который вы получаете в ответе Норберта, является в производственной среде значением, которое уже было обработано и, возможно, изменено вашим веб-сервером (Apache/nginx/etc), ответственным за статический контент и балансировку нагрузки.

person Stephan Eggermont    schedule 27.11.2013