【问题标题】:Java Play Framework Groovy Scripts within JavascriptJavascript 中的 Java Play Framework Groovy 脚本
【发布时间】:2011-09-26 12:00:28
【问题描述】:

我想使用 Java Play 框架执行一些 AJAX 样式的数据检索,但遇到了“路由”脚本语法问题。

问题在于@{Movies.show("'+movie.id+'")} 下面的代码被编译为url/etc/+movie.id+ 而不是url/etc/1

<script type="text/javascript">
       function showMoreMovies()
       {
       $.getJSON('@{Movies.jsonAllMovies()}', function(movies) {

          var items = [];

          $.each(movies, function(i, movie) 
          { 
          var div_data =  '<div class="movie">'+
                          '<h2 class="movie-title"><a href="@{Movies.show("'+movie.id+'")}">'+movie.title+'</a></h2>'+
                          '<div class="release-date">' + movie.releasedString + '</div>'+
                          '<div class="comments">| comments: ' + movie.commentCount + '</div>'+
                          '</div>';

          $(div_data).appendTo("#movie_results");

          });
       });
       }
</script>

解决方法是对路由 url 进行硬编码:

<a href="url/etc/'+movie.id+'">

这可行,但您失去了自动路由的好处。

有没有其他人遇到过这个问题或找到了解决这个问题的新方法?

【问题讨论】:

    标签: java javascript json groovy playframework


    【解决方案1】:

    这很正常... 提醒一下,groovy 脚本是在服务器端预编译的,而不是在客户端执行的。

    &lt;a href="@{Movies.show("'+movie.id+'")}"&gt; 被编译并 groovy 解析 @{Movies.show("'+movie.id+'")} 并生成 "url/etc/+movie.id+" 这是动作的 URL Movies.show(id="+movie.id+")

    你应该使用这个:http://www.playframework.org/documentation/1.2.3/ajax

    var showAction = #{jsAction @Movies.show(':id') /}
    

    然后像这样使用它:

    var div_data =  '<div class="movie">'+
                    '<h2 class="movie-title"><a href="'+ showAction({id: movie.id}) +'">'+movie.title+'</a></h2>'+
                    '<div class="release-date">' + movie.releasedString + '</div>'+
                    '<div class="comments">| comments: ' + movie.commentCount + '</div>'+
                    '</div>';
    

    【讨论】:

    • 或者您可以将一个 url 字段添加到您的电影 json 中,该字段是从 @{Movies.jsonAllMovies()} 调用返回的
    【解决方案2】:

    另一种解决方案是使用以下方法:

    "/movies/show/etc/"+movie.id;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      • 2013-05-14
      • 2013-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多