避免JavaScript前端和Java后端的validation码重复?

我们有一个标准的Web应用程序,前端使用Angular,后端使用Java 7编写。我注意到的是,我们得到了很多重复的代码。 也就是说,validation是通过angular度来执行客户端的,但是我不能完全相信他,因为用户可以禁用客户端validation并简单地向服务器提交发布的查询。

因此,我必须在服务器端重复Java中的相同validation逻辑。 这是非常乏味的,但我不知道如何避免这种情况。 也许我可以用一个javascript框架(假设它是Node.js)编写一些后端部分,可以使用与前端相同的validation库,并使Java后端与node.js交互? 为了解决这个问题,最好的办法是什么?

Java可以运行JavaScript代码和其他dynamic脚本语言。 在Java 7中,JavaScript ScriptEngine被称为Rhino,在Java 8中被称为Nashorn。

Java 7的Oracle Java脚本编程人员指南: https : //docs.oracle.com/javase/7/docs/technotes/guides/scripting/programmer_guide/

也许你可以在js文件中编写纯粹的JavaScript文件,这些文件可以放在后端来为客户端服务,也可以在服务器端执行。

AngularBeans框架允许你在java端定义BeanValidation并转换成angular度表单validation,所以代码不会被复制。 看看这篇文章中使用的例子。

例如,将validation规则定义为JSON格式的数据,并通过暴露数据的相同API中的端点公开它们。 现在,validation规则是公开的,任何其他服务都可以使用validation规则来validation数据,这些数据库可以parsing规则并接受/拒绝提交的数据(即从表单)。