Альтернатива для некоторых методов 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,

Другие вопросы по тегам