2012-11-16 64 views
1

我有一個在JSON結果中傳遞動作消息的獨特問題。在動作調用之後在Struts 2攔截器中添加動作消息

現在,如果我在我的動作中添加動作消息(在JSON動作中),我會在JavaScript中選擇它並捕獲動作消息並通過JGrowl提醒用戶。但是,我不希望在每個操作中添加操作消息的邏輯。我有一個底層服務項目,請求上下文在請求之間共享,我可以在那裏添加警告消息。我想要做的是將這些警告消息轉換爲用於我的前端的操作消息,但操作永遠不會意識到它們。這很有用,因爲我可以在訪問數據庫時插入警告,或者如果有繁瑣的業務規則等等。

正如我前面提到的那樣,它直接在動作中添加它們時已經工作,所以我知道JSON結果工作正常,正確傳遞動作消息。我們每次都有一個攔截器被用來管理這個請求上下文,所以我想在這個攔截器中的動作消息中追加被調用的動作。

但是,我發現的問題是,我需要先調用actionInvocation.invoke(),因爲會產生任何警告消息。之後,我檢查這些消息並嘗試將它們應用爲操作消息。這些動作消息從來沒有出現在我的JSON響應中,所以我想知道是否可以將這些消息添加到invoke()調用後的攔截器中的響應中。這是我的截距方法的批量:

try {   
     // Invoke the action. 
     String result = actionInvocation.invoke(); 

     //add all warning messages as an action message to be displayed on that front end 
     if (CollectionUtils.isNotEmpty(context.getWarningMessages())) { 

      ActionSupport action = (ActionSupport) actionInvocation.getAction(); 

      for (String s : context.getWarningMessages()) { 
       action.addActionError(s); 
      } 
     } 

     return result; 

我嘗試添加到在最後塊代替後進行的調用()無濟於事添加操作的消息的邏輯。

感謝, 安迪

回答

相關問題