Sitemesh разных декораторов для одного и того же URL - PullRequest
0 голосов
/ 08 ноября 2011

Я использую urlrewriteFilter (org.tuckey.web.filters.urlrewrite.UrlRewriteFilter) для пересылки страниц типа www.mysite.com/myname в действие Struts2.Действие отображается в sitemesh и работает правильно.

Но теперь я хочу сохранить тот же URL-адрес, но применить другой декоратор к странице, в зависимости от того, вошел ли пользователь в систему или нет.

Я использую AppFuse-стек Struts2.

1 Ответ

0 голосов
/ 10 ноября 2011

Хорошо - так как никто больше не хочет идти.

Sitemesh выбирает декораторы на основе входящей строки URL-адреса, поэтому, чтобы иметь разные декораторы, вам нужны разные URL-адреса в зависимости от состояния входа в систему вашего клиента. AFAIK Sitemesh использует всю строку Url, поэтому она включает параметры, поэтому вы можете избежать добавления? LoggedIn = "true" или? LoggedIn = "false" и сопоставить декораторы с этим. Однако это не помогает с запросами POST.

Еще один способ сделать это - создать два пакета Struts - один для вошедших в систему пользователей и один для анонимных пользователей, чтобы ваши действия имели разные пути, а затем отображались в части пути URL-адреса.

Я не знаю, насколько это может быть практично в вашем сценарии, но третий вариант может иметь один общий декоратор и управлять макетом с помощью отдельных таблиц стилей, которыми вы можете управлять с помощью теста в вашем jsp.

НТН Привет

...