0

大家好,

我试图弄清楚如何允许用户对某些指定数据调用方法。

我想提供一组预定义的功能:

  • 移动平均线,moving_ave(x,5) ..将是 x 的 5 天移动平均线。
  • 3*x+y....等等...

所以基本上,我将为用户提供各种数据系列(x,y,z ....)和一组函数moving_ave,+ - / * ....他们应该能够编写简单的公式(仅限于我提供的功能)。

如何才能做到这一点?

我将在App Engine for Java上部署它。

所以因为我发现了 JSR-223 ......但我不确定它是否合适?我想我可以使用 Eval 功能。

谢谢,

4

3 回答 3

1

听起来你想要的是一个简单语法的解释器。对 Aerosteak 建议的方法保持警惕;允许用户直接调用代码中的函数是危险的,并且很容易在沙箱中出错,从而导致安全漏洞。它还需要您编写自己的解析器。

最简单的方法可能是使用现有的语言 - Javascript 可能非常适合,您可以使用Rhino,一种用 Java 编写的 Javascript 解释器。

于 2010-11-22T02:01:33.140 回答
0

您将需要使用反射来调用未知方法。看一个 Apache BeanUtil。

您可以拥有一个值为:1、2、3 的文本框,将这些值转换为对象数组。

拥有另一个组合框,其中包含您可以调用的所有可能的方法。

然后使用 Bean Util 调用带有 Object Array 的方法。

举个例子:

类 MyMathManager{

public void doCalculationType1(Object args...){..} public void doCalculationType2(Object args...){..} public void doCalculationType3(Object args...){..}

然后看BeanUtil的Java调用这些Method。

祝你好运。

于 2010-11-21T02:25:41.053 回答
0

This sounds like something that could probably be done on the client, rather than the server. You could write a few handy javascript functions that call a restful API on the server to provide the needed data to a few more handy javascript functions that do the useful calculations. It's almost always safe to allow users to eval on their own clients.. they can do it in any case.

于 2010-11-22T02:08:58.867 回答