java - 验证表单 struts2 管理输入

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

最佳答案

您完全绕过了框架验证功能,该功能已准备好使用,工作原理如下:

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

如果拦截器出现错误,它会抛出异常或 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;
    }
}

关于java - 验证表单 struts2 管理输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36202927/

相关文章:

java - 从排序流中获取拆分器会引发异常

带有tomcat的jsf应用程序上的java.lang.stackoverflowerror

javascript - 通过单击按钮从 javascript 和 php 调用两个函数

forms - 如何使用 <h :form> in JSF page? 单一表格?多种形式?嵌套表单?

ruby-on-rails - Rails : Validating that start is before stop, 日期时间

api - 如何为 Kubernetes 准入 Controller 编写响应

java - hibernate 中一对一关联的延迟加载问题

java - 处理文件下载等线程任务中的错误

css - 居中对齐 Contact Form 7 字段

facebook - 如何使用 Facebook 的营销 API 通过邮政编码验证位置定位?