我有两个 Controller ,第一个是:
@Controller("/similarsearch")
public class SimilarSearchController {
@Autowired
SimilarSearchService similarSearchService;
@RequestMapping(method = RequestMethod.GET,produces = "application/json; charset=UTF-8")
@ResponseBody
public String loadSimilarSearchPhrases(HttpServletRequest request,
@RequestParam(value = "q", required = true, defaultValue = "") final String query){
HttpSession session = request.getSession();
List<List<SimilarLink>> responseMain = (List<List<SimilarLink>>) session.getAttribute("responseMain");
Map<String, List<String>> result = similarSearchService.getSimilarSearchPhrases(responseMain,query);
return new JSONSerializer().exclude(JsonHelper.STANDARD_EXCLUDE).include("*").serialize(result);
}
}
它工作得很好,当我访问 localhost:0000/similarsearch/时,它返回了我需要的 json。但是当我添加另一个 Controller 时
@Controller("wiki")
public class WikiController {
@Autowired
SearchService searchService;
@SuppressWarnings("unchecked")
@RequestMapping(method = RequestMethod.GET,produces = "application/json; charset=UTF-8")
@ResponseBody
public String loadWikiInfo(HttpServletRequest request,
@RequestParam(value = "q", required = true, defaultValue = "") final String query){
HttpSession session = request.getSession();
List<List<SimilarLink>> responseMain = (List<List<SimilarLink>>) session.getAttribute("responseMain");
WikiInfoLocal wikiInfo = searchService.getWikiInfo(responseMain,query);
return new JSONSerializer().exclude(JsonHelper.STANDARD_EXCLUDE).include("*").serialize(wikiInfo);
}
}
我收到
java.lang.IllegalStateException:发现不明确的映射。无法映射“/similarsearch”bean 方法
public java.lang.String org.izsearch.controllers.SimilarSearchController.loadSimilarSearchPhrases(javax.servlet.http.HttpServletRequest,java.lang.String) to {[],methods=[GET],params=[],headers=[],consumes=[],produces=[application/json;charset=UTF-8],custom=[]}: There is already 'wiki' bean method
而且我无法使用这些 Controller 中的任何一个。
最佳答案
Spring Api 文档中定义的 Controller 为
Controllers provide access to the application behavior that you typically define through a service interface. Controllers interpret user input and transform it into a model that is represented to the user by the view. Spring implements a controller in a very abstract way, which enables you to create a wide variety of controllers.
所以会更加健壮,适合使用@RequestMapping将请求映射到您的 Controller 。
请这样使用它们
SimilarSearchController.java
@Controller
public class SimilarSearchController {
@Autowired
SimilarSearchService similarSearchService;
@RequestMapping(value="/similarsearch",method = RequestMethod.GET,produces = "application/json; charset=UTF-8")
@ResponseBody
public String loadSimilarSearchPhrases(HttpServletRequest request,
@RequestParam(value = "q", required = true, defaultValue = "") final String query){
WikiController.java
@Controller
public class WikiController {
@Autowired
SearchService searchService;
@SuppressWarnings("unchecked")
@RequestMapping(value="/wiki",method = RequestMethod.GET,produces = "application/json; charset=UTF-8")
@ResponseBody
public String loadWikiInfo(HttpServletRequest request,
@RequestParam(value = "q", required = true, defaultValue = "") final String query){
Basic tutorial about RequestMapping Usage
Detailed tutorial about RequestMapping,RequestParam and PathVariable Usage
关于java - 如何解决spring mvc映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32200590/