2016-03-24 13 views
1

私は問題があります:フォームの検証時に、フォームが有効であればチェックし、有効でない場合はエラーを返します。フォームを検証するstruts2 manage 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結果を返します。

INPUTの結果は、redirectではなく、dispatcherの結果(デフォルト)である必要があります。

<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; 
    } 
} 

は、その後、あなたはこのような何かを行う必要があります