2016-03-31 65 views
0

當我部署我的代碼,我得到錯誤曖昧映射錯誤:春季控制器

Caused by: java.lang.IllegalStateException: Ambiguous mapping found. Cannot map 'programController' bean method 
public java.lang.String com.quizapp.beans.controller.panal.ProgramController.editProgram(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 
to {[],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}: There is already 'programController' bean method 
public java.lang.String com.quizapp.beans.controller.panal.ProgramController.setupProgram(javax.servlet.http.HttpSession,org.springframework.ui.Model) mapped. 

下面是我programController類

@Controller 
    public class ProgramController { 

    @RequestMapping(name = "/editProgram", method = RequestMethod.GET) 
    public String editProgram(HttpServletRequest request, HttpServletResponse response) { 

     if (request.getSession().getAttribute(Constants.LOGGED_IN_USER) != null) { 
      ProgramEntity program = new ProgramEntity(); 
      if (request.getParameter("id") == null) {// create 
       program.setType("create"); 
      } else {// edit 
       program.setType("edit"); 
       program.setCode(request.getParameter("id")); 

      } 
      request.setAttribute("programBean", program); 
      return "editProgram"; 

     } else { 
      return "redirect:/login"; 
     } 
    } 

    @RequestMapping(name = "/program", method = RequestMethod.GET) 
    public String setupProgram(HttpSession session, Model model) { 
     if (session.getAttribute(Constants.LOGGED_IN_USER) != null) { 
      model.addAttribute("programBean", new ProgramEntity()); 
      // if (request.getSession().getAttribute(Constants.LOGGED_IN_USER) != null) { 
      // request.setAttribute("programBean", new ProgramEntity()); 
      return "viewProgram"; 
     } else { 
      return "redirect:/login"; 
     } 
    } 
} 

當我使該方法editProgram作爲POST然後將它部署完美。 爲什麼添加兩個GET方法有問題。 在StackOverflow上有很多類似的問題,但我找不到正確的答案。

+0

你應該給值參數@RequestMapping註解。 – MDaniyal

回答

4

因爲您指定RequestMapping的其他names而不是values。目前,這兩種方法的value都是相同的("" - 空),這是不允許的。請求映射的URL部分應在value中指定,而不應在@RequestMappingname屬性中指定。

+1

非常感謝您節省了這一天。這樣愚蠢的錯誤。它正在工作。 –

1

試試這個:

@Controller 
public class ProgramController { 

@RequestMapping(value = "/editProgram", method = RequestMethod.GET) 
public String editProgram(HttpServletRequest request, HttpServletResponse response) { 

    if (request.getSession().getAttribute(Constants.LOGGED_IN_USER) != null) { 
     ProgramEntity program = new ProgramEntity(); 
     if (request.getParameter("id") == null) {// create 
      program.setType("create"); 
     } else {// edit 
      program.setType("edit"); 
      program.setCode(request.getParameter("id")); 

     } 
     request.setAttribute("programBean", program); 
     return "editProgram"; 

    } else { 
     return "redirect:/login"; 
    } 
} 

@RequestMapping(value= "/program", method = RequestMethod.GET) 
public String setupProgram(HttpSession session, Model model) { 
    if (session.getAttribute(Constants.LOGGED_IN_USER) != null) { 
     model.addAttribute("programBean", new ProgramEntity()); 
     // if (request.getSession().getAttribute(Constants.LOGGED_IN_USER) != null) { 
     // request.setAttribute("programBean", new ProgramEntity()); 
     return "viewProgram"; 
    } else { 
     return "redirect:/login"; 
    } 
} 
} 
+0

謝謝,它與'價值' –