2016-03-31 3 views
0

Wenn ich meinen Code bereitstellen erhalte ich FehlerMehrdeutige Mapping-Fehler: Frühlings-Controller

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. 

Unten ist mein programController Klasse

@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"; 
     } 
    } 
} 

Wenn ich die Methode editProgram als POST machen dann perfekt es einsetzen. Warum gibt es ein Problem beim Hinzufügen von zwei GET-Methode. Es gibt viele ähnliche Fragen zu StackOverflow, aber ich konnte keine richtige Antwort finden.

+0

Sie sollten den Wert Parameter in @RequestMapping Anmerkung geben. – MDaniyal

Antwort

4

Da Sie verschiedene names von RequestMapping und nicht values angeben. Derzeit sind value der beiden Methoden gleich ("" - leer), was nicht erlaubt ist. Ihr URL-Teil der Anforderungszuordnung sollte in value und nicht name Attribut von @RequestMapping angegeben werden.

+1

Du hast den Tag gerettet, Thanku sehr. So ein dummer Fehler. Es funktioniert jetzt. –

1

Try This:

@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

Danke, es arbeitet mit 'Wert' –