Jquery验证不适用于表单内的VO

时间:2014-11-11 04:54:02

标签: jquery spring-mvc jquery-validate

我有一个模型和内部模型我有一个vo。

Class Model{
    private VO vo1;

    getVO1{
    }
    setVO1{
    }
}


Class VO{
    private String name;

    getName{
    }
    setName{
    }
}

在JSP中

<form:input path="vo1.name" name="name" id="name">

在JS中,如果我尝试验证表单,则不会抛出错误。

$("form1").validate({
    rules : {
        "name": required
    },
    messages : {
        "name" : {
            required : "name mandatory
    }
});

相同的JS代码ll适用于以下代码

Class Model{
    private String name;

    getName{
    }
    setName{
    }
}


<form:input path="name" name="name" id="name">

需要知道为什么它没有验证模型的VO中的字段。规格是这样的吗?请帮助

1 个答案:

答案 0 :(得分:0)

就像我说的那样,您需要查看(并向我们展示)每个案例的 呈现的 HTML,以便清楚地看到出现了什么问题。 JavaScript并不关心如何构建模型或服务器端代码中的任何其他内容。 JavaScript在浏览器中运行,只能看到HTML / DOM的构建方式。

你的第一个案例......

<form:input path="vo1.name" name="name" id="name">

将呈现为......

<input name="vo1.name" id="name" type="text">

根据input标记的Spring MVC文档,没有名为name的选项。相反,path在浏览器中呈现为HTML name属性。

由于您呈现的HTML namevo1.name,因此您需要在.validate()方法中使用该声明来声明规则......

$("#form1").validate({ // <- '#' was missing from selector
    rules: {
        "vo1.name": "required" // <- boolean rule declaration needs quotes
    },
    messages: {
        "vo1.name": {
            required: "name mandatory"  // <- closing quotation mark was missing
        }  // <- closing brace was missing
    } 
});

注意您的JavaScript控制台错误。您错过了自定义消息的结束报价以及结束括号。此外,required规则的简写必须用引号括起来,否则它会被解释为变量名。最后,您错过了jQuery选择器中#前面的form1。所有这些都将破坏jQuery或JavaScript,并且大多数都会出现控制台错误。

DEMO:http://jsfiddle.net/ge2xgt8n/

<强>参考

  1. http://docs.spring.io/spring/docs/2.0.x/reference/spring-form.tld.html#spring-form.tld.input

  2. https://stackoverflow.com/a/13841548/594235