В ответ на мой старый вопрос мне удалось заставить URL перезапись работать корректно для моего проекта Struts, где URL-адреса, подобные search?q=blah
, конвертируются в запросы search.action?q=blah
. Для этого мы используем UrlRewriteFilter . Похоже, это пересылает штраф в распорки (если он проверяет соответствие фильтра с FORWARD), но при запуске ParametersIntercepter
кажется, что он перехватывает каждый параметр дважды и добавляет запятую между ними Итак, следующее:
search.action?q=blah
Устанавливает параметр q для объекта Критерии (см. Далее):
[ blah, blah ]
Параметры задаются с помощью ModelDriven<Criteria>
Где Criteria - это простой класс с набором свойств, которые должны быть установлены из строки GET.
Я затрудняюсь объяснить, почему это происходит. Кто-нибудь видел что-нибудь подобное? Я делаю что-то не так с фильтрами / перехватчиками?
edit: кажется, ParametersInterceptor
просто устанавливает параметры, содержащиеся в объекте ActionContext. Я не уверен (и не вижу никаких сообщений отладки, которые указывают), где эти значения устанавливаются в ActionContext. Кто-нибудь хочет уточнить, как это все должно работать?