有什么方法可以使用前缀作为参数或在转发路径中,例如:
<forward name="test" path="/switch.do&page='/test.do'&prefix='/test'"/>
有什么方法可以使用前缀作为参数或在转发路径中,例如:
<forward name="test" path="/switch.do&page='/test.do'&prefix='/test'"/>
我不确定 是什么意思prefix
,我假设您指的是 servlet 的名称。假设您将其作为映射的一部分转发:struts-config.xml
action
<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 名称,构建所需的转发应该不会有问题。