gpt4 book ai didi

java - 使用 Spring MVC 和 ajax 处理对象列表

转载 作者:行者123 更新时间:2023-11-28 11:25:43 24 4
gpt4 key购买 nike

使用 AJAX 和 spring MVC,如何从 Spring Controller 返回对象列表并使用 Jquery 显示它们。

发出以下 Ajax 请求:

$.ajax({
type: "POST",
url: "allUser.html",
dataType:'json',

data: "select=" + selectedCheckboxArray,
success: function(data){
var userListContent="";
var json =data.message;
$.each(json, function(i, obj) {


userListContent=userListContent+"<tr>";
userListContent=userListContent+"<td><input type='checkbox' value='"+obj.id+"' id='select' name='select'/></td> ";
userListContent=userListContent+"<td id='NameColumn'>"+obj.firstName+" "+obj.lastName +"</td>";
userListContent=userListContent+"<td id='genderColumn'>"+ obj.gender +"</td>";
userListContent=userListContent+"<td id='userNameColumn'>"+ obj.userName +" </td>";
userListContent=userListContent+"<td id='userTypeColumn'> "+ obj.userType +"</td>";
userListContent=userListContent+"<td id='statusColumn'>"+ obj.status +"</td>";
userListContent=userListContent+"<td id='emailIdColumn'>"+ obj.emailId +"</td>";
userListContent=userListContent+"<td id='addressColumn'>"+ obj.address +"</td>";
userListContent=userListContent+"<td id='contactnoColumn'>"+ obj.contactNo +"</td>";
userListContent=userListContent+"</tr>";

});

$('#rounded-corner tbody').html(userListContent);

//console.log(userListContent);



},
error: function(e){


alert('Error: ' + e.responseText);
}
});

MVC Controller

 @RequestMapping(value="/deleteUser",method= RequestMethod.POST)
public @ResponseBody Map<String, Object> deleteUser(UserDetails user,HttpServletRequest request,HttpServletResponse response )throws ServletException,IOException
{
System.out.println("Ajax Request Received for delete User...............");
Map<String, Object> model = new HashMap<String, Object>();

JsonResponse js=new JsonResponse();
js.setResult("pass");
js.setStatus("active");
// String operation=request.getParameter("operation");
String[] selectedUserIdParameter = request.getParameterValues("select");
System.out.println("Length:"+selectedUserIdParameter.length);
/* Code Description:
* Array "selectedUserIdParameter" above has ID like {1,2,3,.....},
* we need to use array like {1 2 3 4 } without (,).so first we must convert.
* Following code doing the same.
* After Conversion Array "selectedUserId" will have ID like {1 2 3 4 }
* If You Know PHP explode()" function ,following is doing something like what explode() function does .
*/


String msg="hello";
List<UserDetails> usersList = userService.getAllUser();
int no=usersList.size();
System.out.println("Size:"+no);
model.put("message", usersList);
model.put("jso", js);

return model;

}

最佳答案

您将接受并返回 JSON 形式的对象,因此请在 Spring Dispatcher servlet xml 中添加 jackson 映射器 bean。 jackson 映射器完成了这一切。您无需手动进行映射或转换。

<beans:bean id="jacksonMessageChanger"  class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<beans:property name="supportedMediaTypes" value="application/json" />
</beans:bean>

<beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<beans:property name="messageConverters">
<util:list id="beanList">
<beans:ref bean="jacksonMessageChanger" />
</util:list>
</beans:property>
</beans:bean>

现在你的 Controller 将是这样的:

@RequestMapping(value = "/deleteUser", method = RequestMethod.POST)
public @ResponseBody
List<UserDetails> deleteUser(@RequestBody UserDetails userDetails) {
// fetch the userid to be deleted from the userDetails
// remebmer the id of user to be deleted will be set in the ajax call

userService.deleteUser(userDetails.getUserId());

// again populate the user list to display on page
List<UserDetails> userList = userService.getAllUser();

return userList;
}

现在你的ajax调用将是这样的:

function deleteUser() {
// set variables into javascript object which you need to send to spring controller
// the variable name here should be same as it is in your java class UserDetails.java

var user = new Object();
user.userId = 120; // id of user to be deleted

$.ajax({
type : 'POST',
url : '/${your project context path here}/deleteUser',
dataType : 'json',
data : JSON.stringify(user),
contentType : 'application/json',
success : function(data) {
//here in data variable, you will get list of all users sent from
// spring controller in json format, currently its object
// iterate it and show users on page

showUsers(data);
},
error : function() {
alert('error');
}
});
}

function showUsers(data) {
// and here you show users on page
//following code just example

$('#allUsers').append("<option value='-1'>Select User</option>");
for ( var i = 0, len = data.length; i < len; ++i) {
var user = data[i];
$('#allUsers').append("<option value=\"" + user.userId + "\">" + user.userName+ "</option>");
}
}

这会起作用。

关于java - 使用 Spring MVC 和 ajax 处理对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com