2013-08-12 4 views
1

Я написал несколько методов для достижения Struts 1 функции в Struts 2Альтернатива для некоторых из Struts 1 методов в Struts 2

Struts 1 ActionForward:

же я сделал в 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.

ответ

2

Вы должны использовать реализацию Struts2 Result вместо использования содержимого сервлетов непосредственно до тех пор, пока вы не знай, что ты делаешь. Есть redirect или redirectAction и dispatcher типы результатов, которые следует использовать вместо прямого API сервлета. Struts могут обернуть материал сервлета для некоторого изменения функции, и вы можете получить неработающий код в будущем.

Второй метод действителен, поскольку использует Struts2 API. Однако вам нужно посмотреть how to create URLs programmatically in the actions from ActionMapping.