将Java列表返回到jQuery对象中

将Java列表返回到jQuery对象中,java,javascript,jquery,ajax,spring-mvc,Java,Javascript,Jquery,Ajax,Spring Mvc,基本上,我有一个由按钮实例化的Ajax请求,它被传递到我的控制器,然后控制器返回一个对象列表。我最初想,是否可以通过将返回的ajax对象加载到JSTL forEach循环中来实现这一点,但我认为,经过一些研究之后,这是不可能实现的。 这是我的ajax请求,它根据一个值加载瞄准: //edit the sighting based on the username value $(this).on("click", ".edit_sighting", function(){

基本上,我有一个由按钮实例化的Ajax请求,它被传递到我的控制器,然后控制器返回一个对象列表。我最初想,是否可以通过将返回的ajax对象加载到JSTL forEach循环中来实现这一点,但我认为,经过一些研究之后,这是不可能实现的。 这是我的ajax请求,它根据一个值加载瞄准:

//edit the sighting based on the username value 
    $(this).on("click", ".edit_sighting", function(){
        $username = +$(".edit_sighting").val();
        $.get("${pageContext.request.contextPath}/getSighting/" + username, function(sightings){
            // load returned object somewhere 
        });
    });
这是我的控制器,它处理ajax请求并响应返回的对象“观察”列表:

@RequestMapping("/getSighting/{username}")
public @ResponseBody List<Sighting> getSighting(Model model, @PathVariable String username) {

    List<Sighting> sightings = sightingsService.getSightings(username);
    model.addAttribute("sightings", sightings);
    return sightings;
}
@RequestMapping(“/getsight/{username}”)
public@ResponseBody List getsight(模型模型,@PathVariable字符串用户名){
ListSightings=sightingsService.getSightings(用户名);
model.addAttribute(“目击”,目击);
返回目击;
}
基本上,我希望将返回的对象加载到for-each循环或显示对象字段的内容中。例如:类似的事情。 每个循环的我的时间:

<c:forEach var="sighting" items="${sightings }">
        <c:out value="sighting.name"/> <!-- load some sighting value --> 
</c:forEach>


所以本质上,我试图实现的是,当一个按钮被实例化时,将多个或一个“观察”加载到一个模态类型的东西中

ajax
请求的响应返回给客户端,客户端无法访问服务器端机制,如
JSTL
。代码应该在客户端使用Javascript/jQuery来显示新的DOM元素

因此,如果您的页面上有以下HTML:

<ul id="sightings"></ul>
    回调将如下所示:

    $(this).on("click", ".edit_sighting", function(){
        $username = +$(".edit_sighting").val();
        $.get("${pageContext.request.contextPath}/getSighting/" + username, function(sightings){
            var output = "";
            for(var i = 0; i < sightings.length; i++){
                output =+ "<li>" + sightings[i].name + "<\/li>";
            }
            $("#sightings").append(output);
        });
    });
    
    $(this).on(“单击“,”.edit_sighting”,函数(){
    $username=+$(“.edit_sighting”).val();
    $.get(“${pageContext.request.contextPath}/getSighting/”+用户名,函数(sighting){
    var输出=”;
    对于(变量i=0;i”+观测[i]。名称+”;
    }
    $(“#目击”)。追加(输出);
    });
    });
    

    这将构建一个包含HTML的
    字符串
    ,该HTML在每次看到时都有一个
    li
    。然后将HTML作为
    #sightings ul

    的子项附加到DOM中。对
    ajax
    请求的响应返回给客户端,客户端无法访问服务器端机制,如
    JSTL
    。代码应该在客户端使用Javascript/jQuery来显示新的DOM元素

    因此,如果您的页面上有以下HTML:

    <ul id="sightings"></ul>
    
      回调将如下所示:

      $(this).on("click", ".edit_sighting", function(){
          $username = +$(".edit_sighting").val();
          $.get("${pageContext.request.contextPath}/getSighting/" + username, function(sightings){
              var output = "";
              for(var i = 0; i < sightings.length; i++){
                  output =+ "<li>" + sightings[i].name + "<\/li>";
              }
              $("#sightings").append(output);
          });
      });
      
      $(this).on(“单击“,”.edit_sighting”,函数(){
      $username=+$(“.edit_sighting”).val();
      $.get(“${pageContext.request.contextPath}/getSighting/”+用户名,函数(sighting){
      var输出=”;
      对于(变量i=0;i”+观测[i]。名称+”;
      }
      $(“#目击”)。追加(输出);
      });
      });
      

      这将构建一个包含HTML的
      字符串
      ,该HTML在每次看到时都有一个
      li
      。然后将HTML作为
      #sightings ul

      的子项附加到DOM中。对
      ajax
      请求的响应返回给客户端,客户端无法访问服务器端机制,如
      JSTL
      。代码应该在客户端使用Javascript/jQuery来显示新的DOM元素

      因此,如果您的页面上有以下HTML:

      <ul id="sightings"></ul>
      
        回调将如下所示:

        $(this).on("click", ".edit_sighting", function(){
            $username = +$(".edit_sighting").val();
            $.get("${pageContext.request.contextPath}/getSighting/" + username, function(sightings){
                var output = "";
                for(var i = 0; i < sightings.length; i++){
                    output =+ "<li>" + sightings[i].name + "<\/li>";
                }
                $("#sightings").append(output);
            });
        });
        
        $(this).on(“单击“,”.edit_sighting”,函数(){
        $username=+$(“.edit_sighting”).val();
        $.get(“${pageContext.request.contextPath}/getSighting/”+用户名,函数(sighting){
        var输出=”;
        对于(变量i=0;i”+观测[i]。名称+”;
        }
        $(“#目击”)。追加(输出);
        });
        });
        

        这将构建一个包含HTML的
        字符串
        ,该HTML在每次看到时都有一个
        li
        。然后将HTML作为
        #sightings ul

        的子项附加到DOM中。对
        ajax
        请求的响应返回给客户端,客户端无法访问服务器端机制,如
        JSTL
        。代码应该在客户端使用Javascript/jQuery来显示新的DOM元素

        因此,如果您的页面上有以下HTML:

        <ul id="sightings"></ul>
        
          回调将如下所示:

          $(this).on("click", ".edit_sighting", function(){
              $username = +$(".edit_sighting").val();
              $.get("${pageContext.request.contextPath}/getSighting/" + username, function(sightings){
                  var output = "";
                  for(var i = 0; i < sightings.length; i++){
                      output =+ "<li>" + sightings[i].name + "<\/li>";
                  }
                  $("#sightings").append(output);
              });
          });
          
          $(this).on(“单击“,”.edit_sighting”,函数(){
          $username=+$(“.edit_sighting”).val();
          $.get(“${pageContext.request.contextPath}/getSighting/”+用户名,函数(sighting){
          var输出=”;
          对于(变量i=0;i”+观测[i]。名称+”;
          }
          $(“#目击”)。追加(输出);
          });
          });
          

          这将构建一个包含HTML的
          字符串
          ,该HTML在每次看到时都有一个
          li
          。然后,HTML作为
          #sightings ul

          的子项附加到DOM中。您不能为此使用JSTL,因为JSTL是在页面发送到客户端之前在服务器上执行的。您可以在服务器上呈现HTML并返回HTML文档(而不是JSON)。因此,解决方案是定义一个JSP视图,该视图使用JSTL呈现列表,并将AJAX请求更改为接受HTML

          另一个解决方案是添加一个基于JavaScript的模板引擎,并在客户端进行模板渲染

          或者使用jQuery手动执行。如果你有

          <ul id="sightings"></ul>
          
            那你可以

            var sightings = $('#sightings');
            sightings.empty();
            $.each(sightings, function(index, e){
                var li = $('<li>');
                li.text(e);
                sightings.append(li);
            });
            
            var观测=$(“#观测”);
            目击。空();
            $。每个(目击,功能(索引,e){
            var li=$(“
          • ”); li.案文(e); 目击。附加(李); });
          • 您不能为此使用JSTL,因为JSTL是在页面发送到客户端之前在服务器上执行的。您可以在服务器上呈现HTML并返回HTML文档(而不是JSON)。因此,解决方案是d