我们从Oracle JDK 8u77升级到8u92,突然之前运行的脚本不再有效.最小的复制者是:
Map<String, Object> attributes = Collections.singletonMap("GROSSREIMBAMOUNT", BigDecimal.ZERO);
String script = "GROSSREIMBAMOUNT.toFixed(2)";
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine jsEngine = mgr.getEngineByName("JavaScript");
for (Entry<String, Object> entry : attributes.entrySet()) {
jsEngine.put(entry.getKey(), entry.getValue());
}
System.out.println(jsEngine.eval(script));
Run Code Online (Sandbox Code Playgroud)
以前我们得到了
0.00
Run Code Online (Sandbox Code Playgroud)
但现在我们得到了.
TypeError: GROSSREIMBAMOUNT.toFixed is not a function
Run Code Online (Sandbox Code Playgroud)
typeof现在返回object之前返回的位置number.
我的问题是这种行为故意还是一个错误?我首先虽然这将是一个错误,但JDK-8010732似乎暗示不然.
我正在使用jQuery编写Javascript API客户端.我的顶级请求方法如下所示:
function request(method, uri, params, proxies) {
var deferred = $.Deferred();
$.ajax({
data: method == 'GET' ? params : JSON.stringify(params),
contentType: 'application/json',
dataType: 'json',
url: api.root + uri,
type: method,
xhrFields: {
withCredentials: true
}
}).done(function(body) {
deferred.resolveWith(this, [body.data]);
}).fail(function(xhr) {
deferred.rejectWith(this, [xhr]);
});
return deferred.promise();
},
Run Code Online (Sandbox Code Playgroud)
如何fail为返回的延迟提供默认处理程序?也就是说,如果deferred没有附加到其fail条件的其他处理程序,则调用默认处理程序.
我想这样做是为了在我的应用程序中进行全局异常处理,除了具有特定处理的部分(并且将fail在延迟上定义自己的处理程序).
我有模特儿
[Required]
[EmailAddress]
[Remote("EmailValidation", "Account", ErrorMessage = "{0} already has an account, please enter a different email address.")]
[Display(Name = "Email")]
public string Email { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[System.ComponentModel.DataAnnotations.Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
Run Code Online (Sandbox Code Playgroud)
和注册表格:
<form …Run Code Online (Sandbox Code Playgroud) 我有成千上万的音乐曲目索引.为了搜索,我想通过曲目标题升序返回曲目.
我还有一个created_at字段,它是我将曲目添加到库的日期时间.我可以动态改变排名吗?
因此,对于我在查询之前的常规艺术家/标题搜索,我会运行:
index.setSettings({
ranking: [
"asc(title)",
"asc(artist)"
]
});
Run Code Online (Sandbox Code Playgroud)
然后,当我想要返回我最近添加到数据库的轨道时,我会运行:
index.setSettings({
ranking: [
"desc(created_at)",
"asc(title)",
"asc(artist)"
]
});
Run Code Online (Sandbox Code Playgroud)
我的问题是:这是表现好吗?对每个查询执行此操作是否有任何不足之处?
感谢您的建议!
.net ×1
algolia ×1
asp.net-mvc ×1
c# ×1
java ×1
javascript ×1
jquery ×1
nashorn ×1
validation ×1