2014-09-18 4 views
1

Весной MVC, у меня есть форма поиска. Если пользователь отправляет форму поиска, результат должен отображаться на той же странице. Это перенаправление на ту же страницу Но я не получаю атрибуты в JSP от контроллера.Spring 3.0: Как перенаправить на ту же страницу

qSearch.jsp

<form:form name="quickSearchForm" id="searchFormId" method="POST" action="./searchQuick.html" modelAttribute="searchForm" onsubmit="return validateForm()"> 
      <table> 
       <tr> 
        <th>Change/Defect ID</th><td><form:input type="text" name="identifier" path="identifier"/></td> 
       </tr> 
      </table> 
      <div class="icons"> 
       <span><button style="left:0px" type="reset" name="clear" style="border-radius: 25px;">CLEAR</button></span> 
       <span><button style="right:0px" type="submit" name="submit" style="border-radius: 25px;" >SEARCH</button></span> 
      </div> 
     </form:form> 

        <hr> 
      <div> 
       <c:if test="${empty SEARCH_RESULTS_KEY}"> 
       <table style="border-collapse: collapse;" border="1" class="showResults"> 
         <tr> 
          <td colspan="7">No Results found</td> 
         </tr> 
       </table>   
        </c:if> 
      <c:if test="${! empty SEARCH_RESULTS_KEY}"> 
       <table style="border-collapse: collapse;" border="1" class="showResults"> 
         <tr> 
          <td colspan="7">Result found</td> 
         </tr> 
       </table> 
      </c:if> 

Контроллер

@RequestMapping(value="/qSearch", method = RequestMethod.GET) 
public String getQuickSearchmodel(Model model) { 
    System.out.println("Welcome to search tool\n"); 
    ArchivalIssue archivalIssue=new ArchivalIssue(); 
    model.addAttribute("searchForm", archivalIssue); 
    return "quickSearchPage"; 
} 

@RequestMapping(value = "/searchQuick", method = RequestMethod.POST) 
public ModelAndView getAllArchivalIssues(HttpServletRequest request){ 

    String identifier = request.getParameter("identifier"); 
    List<ArchivalIssue> archivalIssue = archivalIssueService.getAllArchivalIssue(identifier); 

     ModelAndView mav = new ModelAndView("redirect:/qSearch");       //Add model to display results 
     mav.addObject("SEARCH_RESULTS_KEY", archivalIssue);       //Add result object to model 
     return mav; 

} 

пожалуйста кто-нибудь помочь мне, как получить результат в JSP. Я всегда не получаю никакого результата.

ответ

0

Я думаю, что вы не должны перенаправлять в этом случае. Поскольку перенаправление создаст новый запрос GET на сервер . quickSearchPage и getAllArchivalIssues должны возвращать такой же вид

@RequestMapping(value = "/searchQuick", method = RequestMethod.POST) 
public ModelAndView getAllArchivalIssues(HttpServletRequest request){ 

String identifier = request.getParameter("identifier"); 
List<ArchivalIssue> archivalIssue = archivalIssueService.getAllArchivalIssue(identifier); 

//return quickSearchPage, so that the client can render the list archivalIssue 
    ModelAndView mav = new ModelAndView("quickSearchPage");       

    mav.addObject("SEARCH_RESULTS_KEY", archivalIssue);       //Add result object to model 
    return mav; 

} 
+0

Спасибо за ответ. Я попробовал это. Я могу перенаправить на ту же страницу, но я не получаю значение атрибута «archivalIssue» в JSP. –

0

Когда возвращаемое значение содержит перенаправление: префикс, остальное имя вида будет рассматриваться как URL-адрес переадресации. И браузер отправит новый запрос на этот URL-адрес переадресации. Таким образом, метод обработчика, сопоставленный с этим URL-адресом, будет выполнен.

просто верните ту же страницу, что и ответ с атрибутами модели.

Вы используете JSTL есть какие-либо изменения требуется

${empty param.SEARCH_RESULTS_KEY} 
+0

Я пробовал. Но не удается получить какие-либо атрибуты от контроллера. –

+0

Я не уверен в последнем редактировании, потому что, как вы рендеринг с использованием JSTL? – RPaul

Смежные вопросы