2016-11-10 87 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"); 
    }); 
相关问题