我已经编写了一些在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中相同的方法。
答案 0 :(得分:2)
您应该使用Struts2 Result
实现,而不是直接使用servlet,直到您知道自己在做什么。应该使用redirect
或redirectAction
和dispatcher
结果类型而不是直接servlet API。 Struts可能会包装servlet的东西以进行某些功能更改,并且您将来可能无法使用代码。
第二种方法有效,因为它使用Struts2 API。但是,您需要查看how to create URLs programmatically in the actions from ActionMapping
。