通过javascript wp ajax执行java代码

时间:2012-11-30 18:50:06

标签: java javascript

我正在尝试在基于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,因为我无法与服务器通信。

3 个答案:

答案 0 :(得分:2)

如果没有其他技术,就没有办法做你想要的事情。

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

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