验证表单struts2管理INPUT

时间:2016-03-24 14:42:43

标签: java forms validation jsp struts2

我遇到了一个问题:在验证表单后,我会检查Java是否有效,如果表单无效,我会返回错误。

显示错误文本,但我无法验证我的表单并重新检查我的表单。

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 个答案:

答案 0 :(得分:1)

您完全绕过了框架验证功能,即可随时使用,并按以下方式工作:

当JSP调用一个动作时,请求在到达动作之前通过一堆拦截器;每个拦截器都会做一些事情,比如设置参数,验证它们等等。

如果拦截器有错误,它会抛出异常或INPUT结果,具体取决于拦截器,并且不会达到操作,因为新响应将从该拦截器开始,映射到异常或INPUT结果。

验证拦截器使用XML验证文件或validate()方法或其他方式,如果添加fieldError(手动在validate()中,或通过XML或注释自动) ),它将返回INPUT结果。

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;
    }
}
相关问题