【发布时间】:2013-10-28 09:00:30
【问题描述】:
我正在使用 PlayFramework 构建一个通过 Ajax 工作的注册用户表单(它从不刷新页面),我显然需要对其进行验证。我正在考虑两种方式来实现客户端和服务器端验证。
- 通过 Ajax 将表单数据发送到服务器端验证,以保存 如果数据有效,则数据库中的用户,或向数据库发送错误消息 前端以防数据无效。所有这些都是通过 ajax 发生的 无需刷新页面。 Pro:这种方式我没有实现任何 客户端验证,但我得到相同的效果。 控制:我无法显示具体 每种类型的无效数据的错误消息(必需,最小长度, 电子邮件格式,...)
- 使用客户端验证(jQuery Validation 插件),然后如果它是有效的,它会将数据发送到服务器端 验证。从服务器端,如果它是有效的,它会注册 用户,否则什么也不会发生(?)。 专业版:非常简单的展示方式 具体错误信息Contro:我需要执行2次相同 验证逻辑
这些是我的考虑,但我不知道它们是否正确,或者是否有其他更好的方法。您认为最好的方法是什么?
问题:
第一种方式:是否可以从服务器验证发送特定的错误消息并使用 PlayFramework 在前端显示它们(无需从头开始编写所有验证规则)?
第二种方式:要实现服务器和端验证,我必须首先通过客户端验证来验证数据,然后传递给服务器?并且在浏览器上禁用了javascript:服务器端验证必须显示一些东西? (例如:值得注意的 Mediafire 没有这样做,我必须假设正确)
编辑: 这是我用来通过 ajax 以 json 格式接收表单数据的代码:
控制器:
JsonNode json = request().body().asJson();
Form<User> userForm = User.form.bind(json);
if(userForm.hasErrors()) {
return badRequest("One or more inputs are invalid");
} else {
// register the user in the db
}
模型(用户):
@Required
public String email;
@Required @MinLength(8) @MaxLength(16)
public String password;
public static Form<User> form = Form.form(User.class);
事实上,它会为任何无效输入返回一条通用消息。我不能做的是:返回(使用 badRequest)特定的错误消息并在表单的每个输入下显示它们。
【问题讨论】:
-
问什么是实现目标的“最佳”方式的问题往往会导致辩论和争论,而不是简洁的正确答案。我已投票以“基于意见”的方式结束。
-
@DuncanJones:看看编辑,我已经更好地解释了这个问题
标签: java ajax validation playframework playframework-2.1