2015-12-01 67 views
1

我有以下情況。在控制器的方法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); 
     } 
    }); 
} 

回答

0

問題1:只是改變返回類型RemindersListWrapper並返回

問題2:由於您使用AJAX,你不能。您需要使用javascript解析返回的列表並根據需要更新頁面。