Привязка сайта к разным декораторам для одного и того же URL

#spring #url-rewriting #struts2 #sitemesh #appfuse

#spring #переписывание URL #struts2 #sitemesh #appfuse

Вопрос:

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

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

Я использую AppFuse-stack Struts2.

Ответ №1:

Хорошо — поскольку никто другой, похоже, не собирается пробовать.

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

Другим способом сделать это было бы создать два пакета Struts — один для зарегистрированных пользователей и один для анонимных пользователей, чтобы у ваших действий были разные пути, а затем сопоставить их с частью пути URL.

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

HTH С уважением