从Struts 2操作重定向到遗留操作?

时间:2013-09-11 16:53:44

标签: java url parameters struts2 actionresult

我的struts 2操作名为CustomerAction.java,位于folderHierarchy/actions/customer下(此处customernamespace)。从此动作类中的一个方法,我将重定向到我的遗留动作类

结果映射是:

@Result(name = "redirectTo", location = "#parameters.redirectLocation", type = "redirect") })

其中#parameters.redirectLocation的值为/customerhome.do?custIdId=200

行动方法是:

 @Action(value = "CustomerAction!redirectToPage")
  public String redirectToLocation() {
    return "redirectTo";
  }

但问题是struts在重定向位置之前自动添加当前动作命名空间(即客户)。因此,struts 2重定向到/myWebApp/customerhome.do?custIdId=200,而不是重定向到/myWebApp/customer/customerhome.do?custIdId=200。 我不知道为什么它添加了cuustomer命名空间以及如何摆脱这个?

我也试过

@Result(name = "redirectTo", location = "#parameters.redirectTo", type = "redirect", params = { "namespace", "/" }) })

但它也没有用。

另一个观察是

什么有用

@Result(name = ComposeMessageCrudAction.REDIRECT_TO, location = "/customerhome.do?custIdId=200", type = "redirect") })

什么行不通

@Result(name = "redirectTo", location = "#parameters.redirectLocation", type = "redirect") })

where value of #parameters.redirectLocation  is `/customerhome.do?custIdId=200`

我不知道为什么第二种方法不起作用以及为什么之前添加客户命名空间 /customerhome.do?custIdId=200

1 个答案:

答案 0 :(得分:0)

使用location属性的值作为struts结果的动态参数。

private String redirectLocation = "/customerhome.do?custIdId=200";

public String getRedirectLocation() {
  return redirectLocation;
}

@Result(name = REDIRECT_TO, location = "${redirectLocation}", type = "redirect")