Я выяснил проблему и нашел решение.
Проблема в том, что этот коммит изменяет поведение org.apache.catalina.core.ApplicationContext.getRequestDispatcher
между 7.0.78 и 7.0.79. Ранее указанный URL-адрес был нормализован перед добавлением в контекстный путь. В 7.0.79 и более поздних версиях нормализованная версия больше не используется.
Нет параметров, изменяющих это поведение, но я выяснил, как решить проблему, изменив местоположение, которое передает Struts. Когда запрос достигает ApplicationContext, Struts уже объединил контекст и URL в одно место, но мы можем переопределить часть контекста в аннотации Request. Он использует "WEB-INF/content/" + "%{url}"
для всего остального, поэтому я изменил его на "%{url}"
.
До этого получалось «WEB-INF / content /../../ bar. jsp»
@Result(name = "foo", location = "../../bar.jsp")
После, в результате появляется "bar. jsp"
@Result(name = "foo", location = "bar.jsp", params = {"location", "%{url}"})