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