我写了一些在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 中相同的效果。
您应该使用 Struts2
Result
实现,而不是直接使用 servlet 的东西,直到您知道自己在做什么。应使用 redirect
或 redirectAction
和 dispatcher
结果类型,而不是直接使用 servlet API。 Struts 可能会包装 servlet 内容以进行某些功能更改,并且您将来可能会得到无法工作的代码。
第二种方法是有效的,因为它使用Struts2 API。但是,您需要了解 如何在
ActionMapping
的操作中以编程方式创建 URL。