2016-03-24 36 views
1

我有一個問題:在驗證表單時,如果表單有效並且無效,則返回錯誤。驗證表單struts2管理INPUT

顯示錯誤文本,但我無法驗證我的表單並重新檢查我的表單。

的struts.xml:

<action name="validerInscription" class="utilisateurAction" method="validerInscription"> 
    <result name="success" type="redirect">home</result> 
    <result name="error" type="redirect">inscription</result> 
    <result name="input" type="redirect">inscription</result> 
</action> 

行動:

public String validerInscription() { 
    logger.info("VALIDATION INSCRIPTION"); 
    boolean isInscriptionReussie = false; 

    if (verificationFormulaire() == true) { 
     utilisateur.setImage("image/avatar/avatar1.png"); 
     isInscriptionReussie = utilisateurService.sauvegarderUtilisateur(utilisateur); 
     session.put("user", utilisateur); // Ajouter utilisateur a la session 
    } else { 
     logger.info("--- INSCRIPTION => RETURN INPUT"); 
     return INPUT; 
    } 

    if (isInscriptionReussie) { 
     logger.info("INSCRIPTION REUSSIE"); 
     return SUCCESS; 
    } else { 
     logger.info("INSCRIPTION ERROR"); 
     return ERROR; 
    } 
} 

回答

1

你完全繞過框架驗證功能,那就是現成的使用和工作方式如下:

當一個JSP調用一個動作時,請求在到達動作之前通過一堆攔截器;每個攔截器都會執行某些操作,例如設置參數,驗證它們等。

如果攔截器有錯誤,則會根據攔截器引發異常或INPUT結果,並且操作不會到達,因爲新的響應將從該攔截器開始映射到異常或INPUT結果的結果。

的驗證工作攔截與XML驗證文件,或validate()方法,或其他方式,如果一個fieldError是(手動在validate(),或自動通過XML或註解)補充說,它會返回輸入的結果。

INPUT結果應該是簡單的dispatcher結果(默認),而不是redirect之一。

那麼你應該做這樣的事情:

<action name="validerInscription" class="utilisateurAction" method="validerInscription"> 
    <result name="success" >home.jsp</result> 
    <result name="error" >inscription.jsp</result> 
    <result name="input" >inscription.jsp</result> 
</action> 
// This will be run by the Validation Interceptor 
public void validate(){ 
    logger.info("VALIDATION INSCRIPTION"); 
    // Here you need to do the checks done in verificationFormulaire(), 
    // adding fieldErrors in case they fails 
    if (firstName==null){ 
     addFieldError("firstName", "First name can't be null"); 
    } 
    if (lastName==null){ 
     addFieldError("lastName", "Last name can't be null"); 
    } 
    // etc... 
} 

// If you reach this, validation has passed 
public String validerInscription() { 

    utilisateur.setImage("image/avatar/avatar1.png"); 
    session.put("user", utilisateur); // Ajouter utilisateur a la session 

    if (utilisateurService.sauvegarderUtilisateur(utilisateur)) { 
     logger.info("INSCRIPTION REUSSIE"); 
     return SUCCESS; 
    } else { 
     logger.info("INSCRIPTION ERROR"); 
     return ERROR; 
    } 
}