2

这只是我现在想知道的事情,因为我已经开始实施它了。

除了在双方使用相同的正则表达式之外,有没有办法在 Javascript 和 Java 中进行等效的验证(密码/用户名规则)?

我可以使用正则表达式,但我宁愿使用更高级的东西。我记得曾经使用过 JQuery 来做这件事,很快就会再看一遍。当然,如果我沿着这条路走,服务器端的验证会以不同的方式实现。只要服务器端的验证是正确的,这并不是真正的问题,但很高兴知道我在双方都有完全相同的规则集。

有什么建议么?


编辑:

我似乎记得 Grails 对验证有一些很好的支持。我没有使用 Grails,但我使用的是 Groovy。是否有一些依赖关系可以用来在 Grails 之外获得相同的东西?

4

2 回答 2

1

如您所知,通常的方法是在服务器端“镜像”客户端验证——例如,客户端上的存在验证和模型中的不可为空的字段。或者两端都写同一个正则表达式。没有真正的抽象来以您想要的方式在一个地方制定规则。

但是,我可以想到几个与您想要的近似的选项。

  • 在隐藏的输入字段中将正则表达式传递给客户端,然后只需编写 JavaScript 即可使用它对您的用户名和密码字段执行模式匹配。
  • 使用更厚的框架,如 JavaServer Faces。它仅在服务器端生成 JavaScript 并处理验证,但它是一种抽象,您只需编写一次代码。我没有数据可以支持这一点,但我感觉到这些年来技术已经失去了很多动力。Grails 和 Play 是同样理念的更现代和流行的例子。

希望有帮助。

于 2013-10-26T16:06:52.580 回答
-1

最好使用 java.util 将所有验证规则放在服务器端。不要忘记这会变得复杂,或者经常需要来自服务器端的数据,例如唯一的用户名。然后,您可以让您的 js 使用 ajax 调用服务器端的特定服务,该服务调用已输入的任何内容的验证规则并在表单上输出任何通知。

如果您的验证规则像必填字段一样次要,那么只需将其放在 js 上并在持久层具有不可为空的字段。

编辑 - 评论

这个答案的目的是表明验证应该存在于后端,以始终确保处理的数据是正确的,无论是否在前端验证。在后端,可以访问前端不可用的数据,并且在一个地方也有复杂性,它将处理数据(例如存储它)并可能重用逻辑(例如在其他地方使用的 api 库)。

这在如今也更加相关,通常后端位于提供 API 的完全独立的层/部署/微服务上。

在前端验证可以镜像,但通常我们只添加简单的。在前端验证的主要原因是节省网络调用和后端处理(例如无需调用检查密码长度或发送将失败的不良数据等)并提供更好的用户体验(例如无需理由让用户填写一个包含 20 个字段的表单,并等待来自服务器的长消息,每个字段都有错误等)。逻辑应该编写一次,并且能够在一个地方轻松更新。

于 2013-10-26T15:55:39.200 回答