Struts 2中一些Struts 1方法的替代方案

时间:2013-08-12 07:52:15

标签: java struts2 struts struts-1 actionresult

我已经编写了一些在Struts 2中实现Struts 1函数的方法

Struts 1 ActionForward

new ActionForward("/home/ShowPage.do?page=edit",true);

我在Struts 2中的表现相同:

public String myActionForward(String url,boolean isRedirect) throws Exception
{
    if(isRedirect){
        response.sendRedirect(url);
    }else{
        RequestDispatcher rd = request.getRequestDispatcher(url);
        rd.forward(request, response);
    }
    return null;
}
myActionForward("/home/ShowPage.do?page=edit",true);

Struts 1:获取结果路径:

String url = mapping.findForward(result).getPath();

我在Struts 2中的表现相同:

public String myGetPath(String result) throws Exception
{
    Map<String,ResultConfig> results = ActionContext.getContext().getActionInvocation().getProxy().getConfig().getResults();
    ResultConfig rc = results.get(result);
    String path = rc.getParams().get("location");
    return path;
}

String url = myGetPath(result);

就像我在Struts 2中编写了一些替代方法一样。

上述替代方法工作正常。但我需要知道,这些方法将来是否会出现任何问题,或者我需要在上面的方法中进行更改,以实现与Struts 1中相同的方法。

1 个答案:

答案 0 :(得分:2)

您应该使用Struts2 Result实现,而不是直接使用servlet,直到您知道自己在做什么。应该使用redirectredirectActiondispatcher结果类型而不是直接servlet API。 Struts可能会包装servlet的东西以进行某些功能更改,并且您将来可能无法使用代码。

第二种方法有效,因为它使用Struts2 API。但是,您需要查看how to create URLs programmatically in the actions from ActionMapping