有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在不加载JSP的情况下将列表传递到JSP页面

我在controller中使用Spring MVC框架ModelAndView方法来显示页面。在页面上,我有一个元素下拉列表元素和表格。在下拉列表中选择选项时,我将元素的Id传递给控制器,并查询所选选项的结果。我正在使用Hibernate从数据库中获取数据。因此,结果是以对象列表的形式出现。我必须在表格中填充这个结果

下面的代码将显示一个JSP,并将列表引用传递给JSP。我正在使用该引用填充页面上的选项

代码:

 List<String> users = new ArrayList<String>();
 ObjectMapper objectmapper = new ObjectMapper();
 String  string = "";
 ModelAndView model = new ModelAndView("xxxx");
 containerList = mapper.writeValueAsString(users);

 List<Intermediate> list = getIntermediateList();
 model.addObject("IntermediateList" , List);
 return model;

JSP代码:

<td>Intermediate</td>
<td>

<select class="form-control margin" id = "dpd" >
<option value="0" selected>--Select--</option>
<c:forEach var="list" items="${IntermediateList}">
<option label="${list.name}" value="${item.id}"></option>
</c:forEach> 
 </select>
</td>   

从下拉列表中选择一个选项后,它将进行ajax调用,并将所选Id传递给控制器方法:

Ajax调用代码:

$("#dpd").change(function(e){

var intermediate = $("#dpd").val();

var data = {
Intermediate : intermediate
};

$.ajax({
method : 'POST',
url : 'intermediateUsers',
data : data ,
success : function(result) {
alert("Success");
} 
,
error : function(result) {
alert('An error occurred.');
}
});  

用于查询列表的控制器代码:

@RequestMapping("/intermediateUsers")
@ResponseBody
public List<Users> intermediateUsers(@RequestParam(value = "intermediate" ,required = false) String intermediate) {

List<Users> users = null;

int selection = Integer.parseInt(intermediate);

users = service.intermediateUsers(selection);

return users;
}

到目前为止,它运行良好,我能够根据所选选项获得用户列表。 请建议我如何将这个列表传递给JSP,不是通过加载整个页面,而是通过只加载table元素来填充列表。我尝试了很多方法,比如将列表转换为JSONObject,但都没有成功


共 (1) 个答案

  1. # 1 楼答案

    你可以用这样的东西

    function showContacts(response){
            $("#tableid tbody tr").remove();
            $.each(response.contacts, function(i, contact) {
                $("#tableid tbody").append(
                        $('<tr>').append($('<td>').text(contact.name),
                                        $('<td>').text(contact.phoneNumber),
                                        $('<td>').text(contact.address)
                                        ));
            });
        }
    function loadContacts(){
        $.ajax({
            type: "GET",
            url: "url/contacts",
            success: function( response ){
                showContacts(response);
            }
        }); 
    }