我有以下情況。在控制器的方法viewUserReminders我將remindersListWrapper傳遞到我的uReminder.jsp頁面。阿賈克斯返回表格modelattribute
@RequestMapping(value = "/user/reminders", method = RequestMethod.GET)
public ModelAndView viewUserReminders(Model model, @ModelAttribute("id_users") Long id_users) throws Exception {
ModelAndView mv = new ModelAndView();
mv.setViewName("user/uReminders");
List<Reminders> remindersList=userService.getUserReminders(id_users);
RemindersListWrapper remindersListWrapper=new RemindersListWrapper();
remindersListWrapper.setRemindersList(remindersList);
mv.addObject("remindersListWrapper", remindersListWrapper);
return mv;
}
在我的uReminders.jsp文件中,我有一個帶有modelattribute remindersListWrapper的窗體。這個jsp頁面顯示提醒表。每個提醒旁邊都有一個複選框。用戶可以選中幾個複選框,單擊按鈕(「標記爲已讀」)並使用Ajax I提交表單並轉到控制器方法 readReminders
()。
uReminders.jsp
<form:form action="/user/ajax/reminders/readReminders" method="POST" modelAttribute="remindersListWrapper" id="remindersForm">
<div id="main">
<table class="table">
<thead>
<tr>
<th></th>
<th></th>
<th>Reminder</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${not empty remindersListWrapper.remindersList}">
<c:forEach items="${remindersListWrapper.remindersList}" varStatus="status" var="reminders">
<tr id="row">
<td><form:hidden path="remindersList[${status.index}].idCalendar"/></td>
<td><form:checkbox path="remindersList[${status.index}].isRead"/></td>
<td><form:input path="remindersList[${status.index}].endDate"/></td>
</tr>
</c:forEach>
</c:when>
<c:when test="${empty remindersListWrapper.remindersList}">
<tr>
<td colspan="3">You have no reminders.</td>
</tr>
</c:when>
</c:choose>
</tbody>
</table>
<c:choose>
<c:when test="${not empty remindersListWrapper.remindersList}">
<input type="button" id="reminders" value="Mark as read"/>
</c:when>
</c:choose>
</div>
</form:form>
$(window).load(function() {
$("#reminders").click(function() {
sendAjax('readReminders', $("#remindersForm").serialize());
});
});
在這種方法我保存讀入的提醒和我建立newRemindersListWrapper跟催的新列表(我想刪除檢查提醒並只顯示未選中)。 我的第一個問題是:如何返回到頁面newRemindersListWrapper本身。
@RequestMapping(value = "/user/ajax/reminders/readReminders", method = RequestMethod.POST)
@ResponseBody
public String readReminders(@ModelAttribute("remindersListWrapper") RemindersListWrapper remindersListWrapper, @ModelAttribute("id_users") Long id_users) throws Exception {
for(Reminders reminders:remindersListWrapper.getRemindersList()){
if(reminders.getIsRead()){
userDao.saveReadReminders(reminders);
}
}
RemindersListWrapper newRemindersListWrapper=new RemindersListWrapper();
///////////////////
here I want to return the newRemindersListWrapper itself
//////////////////
}
我的第二個問題是:如何設置newRemindersListWrapper在我的表格的ModelAttribute。
function sendAjax(ref, data) {
console.log(data);
$.ajax({
url: 'ajax/reminders/' + ref,
type: 'POST',
data: data,
success: function (response) {
////////////////////////////////
I want to get newRemindersListWrapper and set it as modelattribute in form.
////////////////////////////////
console.log("success");
},
error: function (request, status, error) {
console.log('error ' + ref + ' text=' + request.responseText + ' status = ' + status + ' error = ' + error);
}
});
}