美好的一天,
我试图找出如何允许用户在某些指定数据上调用方法。
我想提供一组预定义的函数:
基本上,我将为用户提供各种数据系列(x,y,z ....)和一组函数 moving_ave,+ - / * ....他们应该能够编写简单的公式(仅限于我提供的功能)。
怎么办呢?
我将在 App Engine for Java 上部署它。
所以我已经发现了JSR-223 ...但我不确定它是否合适?我在想我可以使用Eval函数。
谢谢,
答案 0 :(得分:1)
听起来你想要的是一个简单语法的解释器。要非常警惕Aerosteak建议的方法;允许您的用户直接调用代码中的函数是危险的,并且很容易在沙箱中出错,从而导致安全漏洞。它还需要你编写自己的解析器。
最简单的方法可能是使用现有语言 - Javascript可能非常适合,您可以使用Rhino,一个用Java编写的Javascript解释器。
答案 1 :(得分:0)
您需要使用Reflection来调用unknow方法。看一下Apache BeanUtil。
您可以使用值为1,2,3的TextBox,将这些值转换为Object Array。
拥有另一个可以使用所有可能方法的ComBo Box。
然后使用Bean Util通过Object Array调用该方法。
例如:
类MyMathManager {
public void doCalculationType1(Object args ...){..} public void doCalculationType2(Object args ...){..} public void doCalculationType3(Object args ...){..}
然后查看Bean的Bean来调用这些方法。
祝你好运。
答案 2 :(得分:0)
这听起来像是可以在客户端而不是服务器上完成的事情。您可以编写一些方便的javascript函数,在服务器上调用一个restful API,以便为执行有用计算的一些更方便的javascript函数提供所需的数据。允许用户评估他们自己的客户端几乎总是安全的..他们无论如何都可以做到。