java - struts2如何运行它的validate方法?

标签 java ajax validation struts2 xml-validation

我正在使用 validate() 方法进行 XML 表单验证和表单验证。 XML验证是检查他们是否填写了必填字段,字段长度是否正确等,而验证方法则执行数据库查找,输入的值是否存在于数据库中。如果确实存在,则会添加字段错误。

现在是我的问题。当我提交表单并且没有填写 requiredstrings 时,它会向页面添加错误,但是当我输入有效值时,它仍然提示相同的错误(同时它不会调用验证方法)。

这是我的表格。

<!DOCTYPE HTML>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<html>
<head>

<sj:head/>  
</head>
<body>
    <h3>Register for a prize by completing this form.</h3>
    <div id="divErrors">
    </div>

    <s:form action="register" id ="result">
            <label>UserName</label>
            <s:textfield name="userBean.username" />
            <s:fielderror/>
        <sj:submit 
                    targets="result" 
                    value="AJAX Submit" 
                    indicator="indicator"
                    button="true"
                    />

    </s:form>
</body>
</html>

注册验证.xml

<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
    "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
    <field name="userBean.username">
        <field-validator type="requiredstring">
            <message>User name is required.</message>
        </field-validator>
    </field>
</validators>

还有我的 RegisterAction 类中的 validate

public void validate(){

        if(userBean != null && userBean.getUsername().equals("foo")){
            this.addFieldError("userBean.username", "That Username already exist");

        }

    }

我正在做的场景。

我将提交表单而不填写所需的字符串,然后我将输入一个有效值,提交表单后仍然存在相同的错误。

最佳答案

实际上,问题在于Struts2中的验证框架默认在验证失败时返回input结果。如果 input 是 JSP 页面,即内部表单,那么当您进行 ajax 调用时,整个页面将被替换。

第二次进行有效调用,因此在验证之后,execute 方法应该返回结果。这个结果应该是页面上目标 "result" 处替换的 JSP 片段,即表单元素。但是 div "divErrors" 不会被您的代码替换。如果在第一个请求时出现错误,那么它就会出现。

好吧,我认为理解 ajax 和验证已经足够了。现在您了解了如何解决返回非预期结果的问题。

关于java - struts2如何运行它的validate方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13965830/

相关文章:

javascript - 使用ajax和css下拉

javascript - 使用变量数组创建 jQuery 模糊事件

javascript - 在 javascript、jquery 或 vue 中创建动态条件

java - 不纯的函数会返回任何东西吗?

java - 如何查找在tomcat服务器中打开的文件数

javascript - 如何取消挂起的 Jquery Ajax 调用?

javascript - AngularJS withCredentials 不发送

java - 使用自定义 validator 时忽略 spring 验证注释

java - PebbleSolitaire 解决方案未在 Kattis (java) 中被接受

java - 使用带有 DAO 模式的 Guice 进行依赖注入(inject)