Как я могу изменить способ обработки отдельных элементов в Seaside? - PullRequest
2 голосов
/ 19 февраля 2011

По умолчанию указывает example.com/myapp на любое приложение, зарегистрированное на myappЯ хотел бы иметь основное приложение, которое также может обрабатывать эти ссылки, или какой-то другой способ обработки этих ссылок.

Пока у меня есть приложение home, которое также зарегистрировано как приложение по умолчанию,поэтому http://mydomain.com разрешит его, но если я сгенерирую ссылку, например http://mydomain.com/more-info, Seaside попытается разрешить приложение, зарегистрированное в more-info.Что если я хочу, чтобы мое приложение home обрабатывало ссылку?Или обработать это каким-то другим способом?

Я размещаю Seaside с Apache, поэтому я мог бы использовать механизм перезаписи URL-адресов Apache для перезаписи http://mydomain.com/more-info в http://mydomain.com/home/more-info, который будет обрабатываться моим приложением home.

Есть ли лучший способ сделать это?Кроме того, если бы существовала ссылка на объяснение жизненного цикла запроса / ответа Seaside, это было бы замечательно.

1 Ответ

4 голосов
/ 20 февраля 2011

То, что вы пытаетесь сделать, не является обычной практикой в ​​приложениях Seaside. Если вы хотите сгенерировать ссылку с одной страницы на другую страницу в вашем приложении, вы обычно используете обратный вызов, прикрепленный к привязке:

html anchor callback: [ self call: moreInfoComponent]

В таких случаях вас не волнует, как выглядит URL-адрес, и Seaside генерирует его для вас. Такие сгенерированные URL никогда не имеют вложенной структуры, но используют параметры.

Более подробную информацию о Приморском цикле запросов / ответов можно найти в электронной книге (главы "Основы" и "Компоненты последовательности").

Однако, если вы действительно хотите иметь такой вложенный URL-адрес (чтобы сделать URL-адреса закладками), существуют разные подходы, в зависимости от того, чего вы действительно хотите достичь. Вы можете взглянуть на подход для обработки сеансов с истекшим сроком действия (в книге) или на пакет Seaside-REST .

Кстати, отображение URL-адресов в приложениях происходит через (экземпляры) WADispatcher. Если вы проверите результат следующего выражения, вы увидите дерево диспетчера Seaside. Он полностью настраивается путем добавления новых приложений, диспетчеров и т. Д. *

WAAdmin defaultServerManager adaptors first requestHandler

Надеюсь, это поможет вам на вашем пути ...

...