2015-09-07 3 views
1

Я переношу приложение из Struts 1 в Struts 2. Я столкнулся со следующим фрагментом кода. Пожалуйста, дайте мне знать, как заменить фрагмент кода в Struts 2.Миграция из Struts1 в Struts2

protected ActionForward getActionForward(FilterContext ctx, String key, boolean redirect) { 
    HashMap filterForwards = ctx.getFilterForwards(); 
    String forwardPage = (String)filterForwards.get(key); 
    if(forwardPage == null) 
     return null; 
    return new ActionForward(forwardPage, redirect); 
} 

И еще один фрагмент кода, как это: -

protected void setError(HttpServletRequest req, String msg) { 
     ActionMessages errors = new ActionMessages(); 
     errors.add("exception", new ActionMessage(MSG_KEY, msg)); 
     req.setAttribute(Globals.ERROR_KEY, errors); 
    } 

Должен ли я заменить приведенный выше код с addActionError(msg)?

+0

Вы можете оставить свой полный код. по этому коду мы не можем догадаться, чего вы пытаетесь достичь? – soorapadman

+0

Ну, это сложно опубликовать весь код. Но в первом случае функция предназначена для перенаправления страницы. Во втором случае код предназначен для установки глобальной ошибки действий. Я надеюсь, что это помогает. – Test

ответ

1

В Struts 1 вы должны вернуть ActionForward из метода execute. Struts 2 возвращает код результата типа String. Поэтому код, в котором ожидается ActionForward, должен быть заменен кодом результата. Результат действия должен быть настроен так же, как вы настраиваете форварды в Struts 1.

Создайте два конфигурационных файла: один - redirectAction тип результата и другой тип результата dispatcher. Как это

<result name "redirect" type="redirectAction">${forwardPage}</result> 
<result>${forwardPage}</result> 

Код должен заменить

private String forwardPage; 

public String getForwardPage() { return forwardPage; } 

public void setForwardPage(String forwardPage) { 
    this.forwardPage = forwardPage; 
} 

protected String getActionForward(FilterContext ctx, String key, boolean redirect) { 
    HashMap filterForwards = ctx.getFilterForwards(); 
    String forwardPage = (String)filterForwards.get(key); 
    if(forwardPage == null) 
     return NONE; 
    if (redirect) { 
     setForwardPage(forwardPage); 
     return "redirect"; 
    } else { 
     setForwardPage(forwardPage) 
     return SUCCESS; 
    } 
} 

Ошибки обеспечиваются ActionSupport класса, ваши действия должны унаследовать. Затем вы можете использовать код

protected void setError(String msg) { 
    addActionError(getText("exception", new Object[]{msg})); 
} 

В JSP вы можете отобразить ошибки с

<s:actionerror/> 
Смежные вопросы