2016-03-31 6 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. 

を取得するには、私はメソッドPOSTとしてeditProgram作るとき、それは完全に展開

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

私programControllerクラスです。 なぜ2つのGETメソッドを追加すると問題がありますか? StackOverflowで利用可能な多くの同様の質問がありますが、私は正解を見つけることができませんでした。

+0

あなたは注釈を@RequestMappingにvalueパラメータを与える必要があります。 – MDaniyal

答えて

4

namesRequestMappingであり、valuesではないことを指定しているためです。現在のところ、両方の方法のvalueは同じものであり、許可されていません("" - 空)。リクエストマッピングのURL部分はvalueに指定し、name属性には@RequestMappingを指定しないでください。

+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

ありがとうございました、その '値' –