2015-05-12 4 views
3

Я попытался добавить ошибки действия в класс Action и распечатать их на странице JSP.Ошибки действия не показаны на JSP

Когда произошло исключение, он переходит в блок catch и печатает сообщение «Ошибка при вставке исключения, обратитесь к администратору» в консоли.

В блоке поймать, я добавил его addActionError(), и я попытался напечатать его в JSP странице ...
но сообщение не отображается на странице JSP.

Что мне может не хватать или что-то не так?

Struts отображение:

<action name="dataUpdate" class="foo.bar.myAction" method="updation"> 
    <result name="success" type="redirectAction"> 
     ../Aggregator/redirectToDataUpdate 
    </result> 
</action> 

класс Действие:

public String updation() throws JiffieTransactionException{ 
    try { 
     // do stuff... 
    } catch (NumberFormatException e) { 
     addActionError("Error in inserting the Exception, Contact the Admin"); 
     System.out.println("Error in inserting the Exception, Contact the Admin"); 
     e.printStackTrace(); 
    } 
    return SUCCESS; 
} 

JSP код ошибки печати действия:

<s:if test="hasActionErrors()"> 
    <br></br> 
    <div class="errors"> 
     <font color="red"> 
      <s:actionerror/> 
     </font> 
    </div> 
</s:if> 

ответ

1

При выполнении redirectAction новый запрос создается, и, следовательно, все actionMessages, actionErrors, наряду со всеми другими параметрами (явно не объявлены быть переданы в Конфигурация расположений) теряются.

Тогда

  • Использование по умолчанию dispatcher результат вместо redirectAction результата, или
  • использовать MessageStore Interceptor для сохранения ошибок и сообщений через редиректы или
  • возвращение другой результат типа диспетчеру в случае ошибок, например. ERROR:

    <action name="dataUpdate" class="foo.bar.myAction" method="updation"> 
        <result name="success" type="redirectAction">....redirectToDataUpdate</result> 
        <result name="error">previousPage.jsp</result> 
    </action> 
    
    public String updation() { 
        try { 
         // do stuff... 
         return SUCCESS; 
        } catch (NumberFormatException e) { 
         addActionError("Errors... "); 
         e.printStackTrace(); 
         return ERROR; 
        } 
    } 
    
+0

Не могли бы вы объяснить использование диспетчера по умолчанию для моего кода. Я до сих пор не использовал его. –

+0

Удалите redirectAction из вашего результата декларации, и указывают на JSP: '<имя результата =«Успех»> result.jsp' (если не указан тип результата, 'тип =«грузоотправитель»' предполагается) –

+0

Но результат не должен отображаться на страницу jsp, он должен отображать другое действие struts, где он будет заполнять данные и отображать результирующую страницу jsp. –

1

Добавить сообщение действий в уловов блоке как:

addActionMessage("Error in inserting the Exception, Contact the Admin"); //in catch block 

, а затем на Jsp пишут:

<s:if test="hasActionErrors()"> 
    <br></br> 
    <div class="errors"> 
     <font color="red"> 
       <s:actionerror/> 
      </font> 
    </div> 
    <s:if test="hasActionMessages()"> 
    <div class="errors"> 
     <font color="red"> 
      <s:actionmessage/> 
     </font> 
     </div> 
    </s:if> 
    </s:if> 
+0

Как это отличается от кода OP? –

+0

Есть ли причина или пояснение для добавления сообщений о действиях. –

+0

Что такое код OP? –

 Смежные вопросы

  • Нет связанных вопросов^_^