小编Har*_*ene的帖子

Nashorn不再使用BigDecimal

我们从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似乎暗示不然.

java nashorn

7
推荐指数
1
解决办法
719
查看次数

为jQuery延迟对象提供默认的"fail"方法

我正在使用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在延迟上定义自己的处理程序).

javascript jquery jquery-deferred

6
推荐指数
1
解决办法
1050
查看次数

为什么DataType.Password仅在服务器端验证?

我有模特儿

[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)

.net c# validation asp.net-mvc data-annotations

2
推荐指数
1
解决办法
1万
查看次数

Algolia即时排名

我有成千上万的音乐曲目索引.为了搜索,我想通过曲目标题升序返回曲目.

我还有一个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)

我的问题是:这是表现好吗?对每个查询执行此操作是否有任何不足之处?

感谢您的建议!

algolia

1
推荐指数
1
解决办法
404
查看次数