小编Fre*_*ind的帖子

如何在客户端编写javascript以及时接收和解析`chunked`响应?

我正在使用play框架来生成分块响应.代码是:

class Test extends Controller {
    public static void chunk() throws InterruptedException {
        for (int i = 0; i < 10; i++) {
            String data = repeat("" + i, 1000);
            response.writeChunk(data);
            Thread.sleep(1000);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用浏览器访问时http://localhost:9000/test/chunk,我可以看到显示的数据每秒都在增加.但是,当我编写一个javascript函数来接收和处理数据时,发现它将阻塞直到收到所有数据.

代码是:

$(function(){
    $.ajax(
        "/test/chunked", 
        {
            "success": function(data, textStatus, xhr) {
                alert(textStatus);
            }
        }
    );
});
Run Code Online (Sandbox Code Playgroud)

收到所有数据后,我可以看到10秒后弹出一个消息框.

如何获取流并及时处理数据?

ajax chunked

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

scala模板中的匹配大小写在play2中不起作用

我在scala模板中的代码:

@session.get("user.id") match {
    case Some(_) => "xx"
    case _ => "yy"
}
<a href="">Logout</a>
Run Code Online (Sandbox Code Playgroud)

但是case ...直接显示在生成的html页面上:

match { case Some(_) => "xx" case _ => "yy" }  Logout
Run Code Online (Sandbox Code Playgroud)

在生成的.template.scala中,它是:

"""
<body>
"""),_display_(Seq(/*11.4*/session/*11.11*/.get("user.id"))),format.raw/*11.26*/(""" match """),format.raw("""{"""),format.raw/*11.34*/("""
    case Some(_) => "xx"
    case _ => "yy"
"""),format.raw("""}"""),format.raw/*14.4*/("""
<a href="">Logout</a>
"""
Run Code Online (Sandbox Code Playgroud)

但我在文档中看到它应该支持match case:https://github.com/playframework/Play20/wiki/ScalaTemplates

@connected match {

  case models.Admin(name) => {
    <span class="admin">Connected as admin (@name)</span>
  }

  case models.User(name) => {
    <span>Connected as @name</span>
  }

}
Run Code Online (Sandbox Code Playgroud)

UPDATE1

最后,我找到了一种工作方式: …

templates playframework-2.0

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

如何使用mongoose将文档插入mongodb并获取生成的id?

我正在使用猫鼬来操作mongodb.现在,为了测试,我想通过本机连接将一些数据插入到mongodb中.

但问题是如何在插入后获取生成的id?

我试过了:

var mongoose = require('mongoose');

mongoose.connect('mongo://localhost/shuzu_test');

var conn = mongoose.connection;

var user = {
    a: 'abc'
};

conn.collection('aaa').insert(user);

console.log('User:');
console.log(user);
Run Code Online (Sandbox Code Playgroud)

但它打印:

{ a: 'abc' }
Run Code Online (Sandbox Code Playgroud)

没有_id领域.

mongoose mongodb

31
推荐指数
3
解决办法
7万
查看次数

如果活动是`singleTask`,如何获得意图附加?

我有一个活动,这是一个单一任务:

public class MyActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        System.out.printf("### MyAcitvity.onCreate: " + getIntent().getExtras());
    }

    @Override
    protected void onResume() {
        super.onResume();
        System.out.println("### MyActivity.onResume: " + getIntent().getExtras());
    }

    public void toNext(View v) {
        startActivity(new Intent(this, AaaActivity.class));
    }
}
Run Code Online (Sandbox Code Playgroud)

和:

<activity android:name=".MyActivity" android:launchMode="singleTask" />
Run Code Online (Sandbox Code Playgroud)

不,它已经开始了,它开始了另一个叫做的活动AaaActivity.

public class AaaActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.aaa);
    }

    public void jumpToFirst(View v) {
        Intent intent = new Intent(this, MyActivity.class);
        intent.putExtra("aaa","bbb");
        startActivity(intent);
    } …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-activity

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

如何配置intellij-idea不格式化代码的某些部分?

在html文件中,有一些代码使用自定义模板语言:

<script type="text/javascript">
    function ($scope, JsRoutes) {
        $scope.rows = [
            ${"#{list rows, as: 'row', separator: ','}"}
            {
            #{list fieldConfigs, as: 'f', separator: ','}
            ${f.name} : ${'$'}{row.${f.name}.toJson()}#{/list}
            }
            ${'#{/list}'}
        ]
    }
</script>
Run Code Online (Sandbox Code Playgroud)

是否可以配置intellij-idea不格式化它(但格式化文档的其他部分)?由于想法会使格式化后难以阅读:

<script type="text/javascript">
    function ($scope, JsRoutes) {
        $scope.rows = [
            ${"#{list rows, as: 'row', separator: ','}"}
            {
    #{list fieldConfigs, as: 'f', separator: ','}
    ${f.name} :
        ${'$'}{
            row.${f.name}.toJson()
        }#{/list}
    }
    ${'#{/list}'}
    ]
    }
</script>
Run Code Online (Sandbox Code Playgroud)

code-formatting intellij-idea

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

如何使用一行正则表达式来获取匹配的内容

我是红宝石的新手,我想知道我是否只能使用一行来完成这项工作.

以此网站的"搜索"为例.当用户输入时[ruby] regex,我可以使用以下代码来获取标记和关键字

'[ruby] regex' =~ /\[(.*?)\](.*)/
tag, keyword = $1, $2
Run Code Online (Sandbox Code Playgroud)

我们可以把它写成一行吗?


UPDATE

非常感谢!我可以更难,更有趣的是,输入可能包含多个标签,例如:

[ruby] [regex] [rails] one line
Run Code Online (Sandbox Code Playgroud)

是否可以使用一行代码来获取tags数组和关键字?我试过了,但都失败了.

ruby regex

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

如何匹配前缀上的字符串并完成剩下的工作?

我可以写这样的代码:

str match {
    case s if s.startsWith("!!!") => s.stripPrefix("!!!")
    case _ =>
}
Run Code Online (Sandbox Code Playgroud)

但我想知道有没有更好的解决方案.例如:

str match {
    case "!!!" + rest => rest
    case _ =>
}
Run Code Online (Sandbox Code Playgroud)

scala match

28
推荐指数
4
解决办法
3万
查看次数

是否有Play2的eclipse插件?

我知道play1有一个,但我找不到play2.

我希望插件可以自动将模板编译为scala代码.现在不方便.

eclipse-plugin playframework-2.0

28
推荐指数
5
解决办法
3万
查看次数

如何在位置变化时获取路线名称?

我定义了一些路线:

angular.module('myApp', [])
  .config('$routeProvider', function($routeProvider) {
    $routeProvider.when('/aaa', { templateUrl: '/111.html' })
                  .when('/bbb', { templateUrl: '/222.html'});
  });
Run Code Online (Sandbox Code Playgroud)

我想在用户更改路线时获取路线名称:

angular.module('myApp')
  .run(['$rootScope', function($rootScope) {
    $rootScope.$on('$routeChangeSuccess', function(scope, current, pre) {
      // how to get current route name, e.g. /aaa or /bbb
      console.log('Current route name: ' + ???);
    }
  }]);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何得到它.我可以得到templateUrl,但不是路线名称.


UPDATE

一个更复杂的用例:

$routeProvider.when('/users/:id', { templateUrl: '/show_user.html' })
Run Code Online (Sandbox Code Playgroud)

如果当前路径是:

/users/12345
Run Code Online (Sandbox Code Playgroud)

它应匹配/users/:id,但我如何知道哪条路线匹配并获得路线名称/users/:id

angularjs

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

an in中的"In"条款?

在anorm中使用"in"子句似乎并不容易:

val ids = List("111", "222", "333")
val users = SQL("select * from users where id in ({ids})").on('ids-> ???).as(parser *)
Run Code Online (Sandbox Code Playgroud)

如何更换???零件?

我试过了:

on('ids -> ids)
on('ids -> ids.mkString("'","','","'"))
on('ids -> ids.mkString("','")
Run Code Online (Sandbox Code Playgroud)

但都没有效果.

我在讨论中看到了完全相同的问题:https://groups.google.com/d/topic/play-framework/qls6dhhdayc/discussion,作者有一个复杂的解决方案:

val params = List(1, 2, 3) 

val paramsList = for ( i <- 0 until params.size ) yield ("userId" + i) 

// ---> results in List("userId0", "userId1", "userId2") 

User.find("id in ({%s})"

    // produces "id in ({userId0},{userId1},{userId2})"
    .format(paramsList.mkString("},{")) 

    // produces Map("userId0" -> …
Run Code Online (Sandbox Code Playgroud)

scala anorm

26
推荐指数
3
解决办法
4602
查看次数