#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 С уважением