0

我正在尝试在基于 Web 的应用程序上实现 java 代码以减少冗余并增加 OOP 原则

我在服务器端 java 代码上有一个电话验证正则表达式。我需要在浏览器上执行与人们添加信息相同的验证,而不与服务器通信。我知道我可以将相同的代码放入 javascript,但是我有两个位置来维护相同的代码。我正在寻找一种简单的方法来发送带有 http 响应的正则表达式函数。

//java code
Class myVerf
{
    bool verPhone(input) {return //comepare verPhone to regEx}
}

//html
input type = "text" id = "1" onkeypress = "verPhoneFunc()"

//javascript
function verPhoneFunc()
{
    //get value from id 1
    //execute verPhone java code
}

这样做有什么缺点吗?EX:如果运行浏览器的机器上没有 JVM,会发生什么?java代码如何在浏览器上执行?

我想再次强调...我不能使用 AJAX,因为我无法与服务器通信。

4

3 回答 3

2

如果没有一些额外的技术,就没有真正的方法来做你正在寻找的事情。

做你想做的最直接的方法是在 Java 和 Javascript 都可以访问的某个公共位置准备一个字符串。为了便于讨论,我会说这是在某个文本文件中,但如果您使用(例如)JSP,您可以在 Java 中准备字符串并通过您的 JSP 模板将其发布到 Javascript。该字符串将包含(未编译的)正则表达式。

在此解决方案中,您保留了主要设计目标(仅将正则表达式保留在一个地方。)

于 2012-11-30T18:57:49.850 回答
1

例如,如果您使用的是 Struts 2,您可以利用该框架的内置声明式验证机制。这支持在一个位置声明验证,并且框架将该验证传播到服务器端验证和客户端验证。

http://struts.apache.org/2.3.4.1/docs/validation.html

于 2012-11-30T19:57:46.360 回答
1

您无法在服务器端应用程序和客户端应用程序之间轻松可靠地共享 java 代码(就像您说的,如果没有安装 java 怎么办;还有其他原因导致这也不是一个好方法)。

话虽如此,您可以做的是共享验证业务规则。定义一种语言来指定验证规则,然后实现两个可以读取和执行这些规则的验证引擎:一个用于后端的 Java 和一个用于客户端的 Javascript。您的 web 应用程序可以拥有这些规则的集中管理存储库,并始终将它们提供给两个引擎。javascript 引擎可以接收嵌入到页面 HTML 中的这些规则,因此不需要 AJAX。

于 2012-11-30T18:58:44.950 回答