2012-04-26 57 views
0

我已經創建了發送動作請求無法顯示的Struts2 fieldError

<meta http-equiv="REFRESH" content="0;url=./radioButton.action"> 

完成此請求被轉發到radio.jsp後的index.jsp。在這一個我顯示國家,州列表等。(所以我重定向這從index.jsp)。 現在我正在對此表格進行驗證。 我創建了正確的.xml爲的validation.When驗證失敗,那麼將被重定向到./radioButton.action

<result name="input" type="redirectAction">radioButton</result> 

我創建延伸MethodFilterInterceptor,這種保持動作一個攔截器在after()方法中具有以下邏輯的會話範圍中的錯誤。

if (fieldErrors != null && fieldErrors.size() > 0) 
     { 
      Iterator it = fieldErrors.entrySet().iterator(); 
      while (it.hasNext()) { 
       Map.Entry pairs = (Map.Entry)it.next(); 
       System.out.println(pairs.getKey() + " = " + pairs.getValue().toString()); 
      } 
      session.put(FIELD_ERRORS_KEY, fieldErrors); 
     } 

public static final String FIELD_ERRORS_KEY = "RedirectMessageInterceptor_FieldErrors"; 

我在我的.xml配置的攔截如下

<interceptors> 
    <interceptor name="redirectMessage" class="com.daya.message.RedirectMessageInterceptor" /> 

     <interceptor-stack name="sessionStack"> 
     <interceptor-ref name="redirectMessage" /> 
      <interceptor-ref name="defaultStack" /> 
     </interceptor-stack> 
    </interceptor-stack> 
</interceptors> 

我收到錯誤消息,我的控制檯上befor投入會話範圍。在控制檯打印輸出是

userName = [User Name is required to login] 
password = [Password is required to login] 

我使用以下標記來顯示所述字段錯誤

<s:fielderror></s:fielderror> 

但在重定向之後的JSP(當驗證失敗)消息沒有得到顯示。

客戶端驗證工作正常。我禁用JavaScript檢查服務器端驗證

+0

你如何從會話中再次獲取消息?我不明白你爲什麼要複製現有的功能。 – 2012-04-26 13:01:44

回答

0

由於Struts提供了一種方式處理這個使用MessageStoreInterceptor但我不知道你爲什麼手動做。

+0

我想自己實現.. – Daya 2012-04-26 11:44:49

+0

然後覆蓋現有的功能而不是創建一個新的功能。 – 2012-04-26 11:52:22

+0

@DayanandaEswar通過告訴我們爲什麼你想實現自己的我們可以提供更好的答案(或建議更好的方法)。 – Quaternion 2012-04-26 22:36:24