【发布时间】:2016-05-17 15:42:54
【问题描述】:
我在尝试将 javascript eval() 与 gwt 一起使用时遇到问题。
基本上,我的数据库中有一个动态字符串,例如:
"'31.07.' + (myVar.getMonth() <= 7 ? myVar.getFullYear() + 3: myVar.getFullYear() + 4 )"
myVar 应该是日期类型的 javascript 变量。
这个变量是通过 GWT JSNI 传递的:
private native String eval(Date dateFieldValue, String scriptlet) /*-{
var myVar = dateFieldValue;
return $wnd.eval(scriptlet);
}-*/;
但未找到 scriptlet 字符串中的“myVar”变量。 我找到了这个: https://support.google.com/code/answer/55205?hl=en
这解释了为什么会发生这种情况。 我将不得不以这种方式分离我的 scriptlet:
"'31.07.' + (" + myVar + ".getMonth() <= 7 ? " + myVar + ".getFullYear() + 3: " + myVar + ".getFullYear() + 4 )"
问题在于这不灵活,因为 scriptlet 是在数据库中管理的,而不是在代码中。那么在这种情况下该怎么办呢?这是不可能的吗?
【问题讨论】:
-
代码混淆是一个选项,如果关闭,您可以简单地关闭。
-
但是gwt还是会改变变量名,还是?我认为,仅仅为了这个而不得不进行混淆就太过分了。
-
是的,我同意,但在绝望的时刻可能是一种选择。
标签: javascript gwt eval jsni