2016-11-10 90 views
0

我有帶輸入和按鈕的jsp頁面search-menu.jsp。當用戶輸入一個值並單擊輸入應傳遞給的按鈕時REST API。然後,響應應該傳遞給另一個名爲search-results.jsp的jsp。控制器通過jsp輸入到Rest API並通過彈簧將響應傳遞給另一個jsp MVC

搜索引入了menu.jsp

<form:form method="POST" modelAttribute="searchitemdata"> 

     <form:input path="searchItem" id="txt-menu-search" name="txt-menu-search" type="text"/> 
     <button class="btn btn-primary input-sm" id="btn-menu-search"></button> 
     </form:form> 

下面是控制器類SearchMenuController.java

@RequestMapping(value = "/search-menu", method = RequestMethod.POST) 
public ModelAndView sendSearchItem(@ModelAttribute("searchitemdata") @Valid SearchItemData searchitemdata, BindingResult result, Model model) { 

    JSONObject jsonObject = new JSONObject(); 
    jsonObject.put("searchItem", searchitemdata.getSearchItem()); 

    RestTemplate restTemplate = new RestTemplate(); 

    MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>(); 
    headers.add("Content-Type", "application/json"); 
    HttpEntity<JSONObject> httpEntity = new HttpEntity<JSONObject>(jsonObject, headers); 

    String searchUrl = baseUrl + searchItemNameUrl; 

    try { 
     ReplyFromServer data = restTemplate.postForObject(searchUrl, httpEntity, ReplyFromServer.class); 
     model.addAttribute("items", data); 
     logger.info("{}", data); 

    } catch (Exception e) { 
     logger.info(e.getMessage()); 

    } 


    return new ModelAndView("/search-results", "searchitemdata", new SearchItemData()); 

從REST調用的響應看起來像

"status": "success", 
"code": 200, 
"message": "records found for the search key thanduri", 
"data": [ 
{ 
    "itemName": "Thanduri Pizza", 
    "description": "Lorem Ipsum is simply dummy text of the printing and ", 
    "type": "non-carbonated", 
    "categoryName": "Pizza", 
    "subCategoryName": "aaaaa" 
} 
], 
"links": [ 
{ 
    "rel": "self", 
    "link": "http://localhost:2222/xxxxxxx/api/v1.0/items/search/thanduri" 
} 
] 

我的問題是如何獲取輸入並將REST響應傳遞給search-results.jsp。並且我的控制器看起來像是這樣沒有正確調用REST模板。

下面是修改後的控制器方法。

@RequestMapping(value = "/search-menu",method = RequestMethod.GET) 
public ModelAndView loadSearchMenuPage(){ 
    return new ModelAndView("/home/search-menu", "searchitemdata", new SearchItemData()); 
} 

@RequestMapping(value = "/search-menu/{searchItem}", method = RequestMethod.GET) 
public ModelAndView generateSearchItem(@PathVariable String searchItem){ 
    ModelAndView modelAndView = new ModelAndView("/home/search-results"); 
    // modelAndView.addObject("searchItem", searchItem); 

    RestTemplate restTemplate = new RestTemplate(); 
    String getItemUrl = baseUrl + searchItemNameUrl + searchItem; 

    ServerResponseMessage searchItemResponse = restTemplate.getForObject(getItemUrl, ServerResponseMessage.class); 
    modelAndView.addObject(searchItemResponse.getData()); 
    return new ModelAndView("/search-results"); 
} 

當我提交表單它給狀態404

回答

0

沒有什麼不對您method.In您的搜索引入了menu.jsp,呼叫控制方法作爲Ajax請求。

$.ajax("home/search-menu") 
    .done(function(result) { 
    alert(result.data[0].itemName); 
    }) 
    .fail(function() { 
    alert("error"); 
    }) 
    .always(function() { 
    alert("complete"); 
    }); 
相關問題