Использование префикса в качестве параметра в fa forward

Есть ли способ использовать префикс в качестве параметра или на пути вперед, например:

<forward name="test" path="/switch.do&page='/test.do'&prefix='/test'"/>

person Community    schedule 06.02.2009    source источник
comment
Почему бы вам не использовать атрибут запроса или сеанса   -  person Fred    schedule 13.02.2009


Ответы (1)


Я не уверен, что имеется в виду под 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 и как получить имена форвардов и имена сервлетов, на которые они указывают, у вас не должно возникнуть проблем с созданием нужного вам форварда.

person Jorge Gajon    schedule 16.12.2009