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

问题描述 投票:0回答:1

我写了一些在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 中相同的效果。

java struts2 struts struts-1 actionresult
1个回答
2
投票

您应该使用 Struts2

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

第二种方法是有效的,因为它使用Struts2 API。但是,您需要了解 如何在

ActionMapping
的操作中以编程方式创建 URL。

© www.soinside.com 2019 - 2024. All rights reserved.