0

有什么方法可以使用前缀作为参数或在转发路径中,例如:

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

1 回答 1

0

我不确定 是什么意思prefix,我假设您指的是 servlet 的名称。假设您将其作为映射的一部分转发:struts-config.xmlaction

<forward name="test" path="/switch" />

如果您想获得可用于您的操作的前锋名称,您可以使用mapping.findForwards().

如果您已经有一个forward,例如:

ActionForward forward = mapping.findForward("test");

您可以通过以下方式获取前锋的名称:

String fwdName = forward.getName(); // returns "test"

以及 servlet 名称或路径:

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,以及如何获取转发的名称和它们指向的 servlet 名称,构建所需的转发应该不会有问题。

于 2009-12-16T06:47:42.757 回答