小编jme*_*end的帖子

如何在Play/Scala中声明一个名为'type'的变量?

我想在Play/Scala应用程序中声明一个名为'type'的变量,因为我的数据有这个字段名,我正在使用JSON转换.它更有意义.

幸运的是,我可以重命名该字段,但仍然很好奇是否有一种方法可以使编译器在声明变量时忽略类型保留字.

scala playframework playframework-2.0

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

JVM返回错误143

在Windows 2003上作为计划任务运行的Java应用程序崩溃,没有任何日志或任何有助于找出发生的事情的内容.唯一可用的信息是应用程序返回代码143(8F).从计划任务日志中检索到该错误代码.

有谁知道错误代码(143)代表什么?注销用户是否可能导致应用程序终止?

谢谢,

java scheduled-tasks windows-server-2003

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

我可以使用AJAX +跨域+ jsonp测试URL是否可访问?

我正在使用JQuery从URL获取信息并异步显示在我的页面上.该URL来自其他域,因此我使用JSONP来获取数据.这很好.

但是,当远程URL关闭时(偶尔发生一次),我的页面挂起,因为JQuery AJAX没有调用"成功"或"错误"函数.

我正在使用JQuery 1.7.

我的代码看起来像:

    $.ajax({
        type : "GET",
        url : "http://otherdomain.com/somePage.html",
        data : params,
        dataType : "jsonp",
        jsonp : "jsonp",

        success : function (response, textS, xhr) {
            alert("ok");
        },
        error : function (xmlHttpRequest, textStatus, errorThrown) {
            alert("not ok " + errorThrown);
        }
    });
Run Code Online (Sandbox Code Playgroud)

如果"somePage"已启动,那么我会看到消息"ok".如果"somePage"无法访问,那么我什么都看不到.

关于如何获得"错误"功能的任何想法被调用?或者更重要的是,如何检测跨域URL是否可访问?

这甚至可能吗?

谢谢,

javascript ajax jquery cross-domain

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

这个Solr范围过滤器查询有什么问题?

以下过滤器查询返回零结果(使用*:*作为查询):

-startDate:[* TO *] OR startDate:[* TO NOW/DAY+1DAY]
Run Code Online (Sandbox Code Playgroud)

但如果我只过滤:

-startDate:[* TO *]
Run Code Online (Sandbox Code Playgroud)

我得到3个结果.

如果我只过滤:

startDate:[* TO NOW/DAY+1DAY]
Run Code Online (Sandbox Code Playgroud)

我得到161个结果.

为什么组合的FQ返回零结果?我想要的是过滤器返回任何开始日期为null或开始日期在今天之前的文档.

编辑:

我正在使用Solr 4.2.1.2013.03.26.08.26.55

编辑:

嗯,奇怪的是,听起来有同事建议将括号括在这两个部分:

(-startDate:[* TO *]) OR (startDate:[* TO NOW/DAY+1DAY])
Run Code Online (Sandbox Code Playgroud)

不知怎的,它奏效了.我仍然很好奇为什么会有所作为.希望有人可以解释一下.

谢谢!

search solr solr-query-syntax

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

Play/Scala如何防止Json序列化空数组?

我想以递归方式将一个类写入Json,因此我使用以下隐式写入:

implicit val writesObject : Writes[Object] = (
  (__ \ "id").writeNullable[String] ~
  (__ \ "list").lazyWriteNullable(Writes.traversableWrites[Object](writesObject))
)(unlift(Object.unapply)
Run Code Online (Sandbox Code Playgroud)

其中Object是这样的类:

case class Object(id: Option[String], list: Option[Seq[Object]])
Run Code Online (Sandbox Code Playgroud)

它有效,但是如果"list"为空,我想阻止它打印任何东西.例如:

我想要:

{ id: "someID",
  list: [
          {
            id: "someOtherId"            
          }
        ] 
}
Run Code Online (Sandbox Code Playgroud)

我目前得到(但不想要):

{ id: "someID",
  list: [
          {
            id: "someOtherId"            
            list: []
          }
        ] 
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我是Play/Scala的新手,不确定我应该注意什么,所以任何指针都会有所帮助.我正在使用Scala 2.2.1.

PS:我已经检查过Scala Json Combinators,但没有看到任何关于如何完成这项工作的参考.

更新:

所以我的问题不是该列表为空,但该列表为空.这就是为什么lazyWriteNullable不起作用的原因.

测试johanandren的答案我想出了JsPath的以下扩展,返回Option [T]并支持递归写入的惰性格式:

def lazyWriteNullableIterable[T <: Iterable[_]](w: => Writes[T]): OWrites[Option[T]] = OWrites((t: Option[T]) => {
  if(t != null) {
    t.getOrElse(Seq.empty).size match { …
Run Code Online (Sandbox Code Playgroud)

json scala jsonserializer playframework playframework-2.0

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