Есть ли способ использовать префикс в качестве параметра или на пути вперед, например:
<forward name="test" path="/switch.do&page='/test.do'&prefix='/test'"/>
Есть ли способ использовать префикс в качестве параметра или на пути вперед, например:
<forward name="test" path="/switch.do&page='/test.do'&prefix='/test'"/>
Я не уверен, что имеется в виду под prefix
, я предполагаю, что вы имеете в виду имя сервлета. Предположим, у вас есть этот forward в вашем struts-config.xml
как часть сопоставления action
:
<forward name="test" path="/switch" />
Если вы хотите, чтобы для вашего действия были доступны имена форвардов, вы можете получить их с помощью mapping.findForwards()
.
Если у вас уже есть forward
, например:
ActionForward forward = mapping.findForward("test");
вы можете получить имя форварда с помощью:
String fwdName = forward.getName(); // returns "test"
и имя или путь сервлета с:
String servletPath = forward.getPath(); // returns "/switch.do"
вы также можете получить его из объекта request
:
String servletPath = request.getServletPath();
Хорошо, теперь, если вы хотите изменить форвард перед тем, как вернуть управление Struts, чтобы добавить дополнительные параметры, вам нужно создать новый ActionForward
на основе одного из форвардов, определенных в вашем struts-config.xml
, например:
ActionForward forward = mapping.findForward("test");
StringBuilder path = new StringBuilder(forward.getPath());
path.append("?id=");
path.append(someobject.getId());
return new ActionForward(path.toString(), true); // `true` means "do a redirect"
Это укажет Struts выполнить перенаправление на URL-адрес, например /switch.do?id=3
.
Зная, как создать новый ActionForward
и как получить имена форвардов и имена сервлетов, на которые они указывают, у вас не должно возникнуть проблем с созданием нужного вам форварда.