Альтернатива для некоторых методов Struts 1 в Struts 2
Я написал несколько методов для достижения функций Struts 1 в Struts 2
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 ответ
Вы должны использовать Struts2 Result
реализация вместо непосредственного использования сервлетов, пока вы не узнаете, что делаете. Там в redirect
или же redirectAction
, а также dispatcher
типы результатов, которые следует использовать вместо прямого API сервлета. Struts может обернуть материал сервлета для изменения некоторых функций, и вы можете получить неработающий код в будущем.
Второй метод действителен, потому что он использует Struts2 API. Однако вам нужно посмотреть, как программно создавать URL-адреса в действиях изActionMapping
,