У меня есть веб-приложение, написанное с использованием Spring Framework, Velocity и (частично) Spring Web Flow.
Чтобы обеспечить общий набор ссылок на всех моих веб-страницах для моего шаблона скорости, яя написал FlowExecutionListener, который выглядит следующим образом:
@Override
public void requestSubmitted(RequestContext context)
{
Map<String, Object> model = new HashMap<String, Object>();
populateModel(model);
context.getRequestScope().putAll(new LocalAttributeMap(model));
}
Затем я могу получить доступ к ключам, хранящимся в модели, в качестве ссылок Velocity, например, $reference
.В общем, это прекрасно работает.
Однако некоторые точки выхода из потока будут перенаправлены на запрос GET, например:
<view-state id="startOver" view="redirect:/new"/>
Эти перенаправления будут выполнять 302 для нового запроса со всеми включенными атрибутами запроса.в параметры URL, в результате чего получается большой громоздкий URL вместо чистого /new
URL-адреса, на который я пытался перенаправить.
Я хотел бы обнаружить в приемнике, когда поток возвращает перенаправление, чтобыМожно пропустить сохранение строк в атрибутах запроса.(Я делаю это с помощью перехватчика со стандартным Spring MVC, сопоставляя, начинается ли имя представления с «redirect:»).Но мне кажется, что я не могу найти способ в слушателе обнаружить это.
Альтернативно, существуют ли другие способы запрета размещения атрибутов запроса на URL после перенаправления?