Próbuję umieścić 2 przyciski wysyłania w formularzu, z każdą akcją przycisku odwzorowaną na różne kontrolery. Oto moje mapowaniaSpring MVC - przycisk wielokrotnego wysyłania do formularza
@RequestMapping(value="/save", method=RequestMethod.POST, params="save")
@RequestMapping(value="/save", method=RequestMethod.POST, params="renew")
i moi złożyć przyciski wyglądają jak te -
<input type="submit" name="save" class="button" value="Save" />
<input type="submit" name="renew" class="button" value="Renew" />
Jak widać z mojego mapowanie, jestem powołując się na wykorzystaniu params odróżnić co przycisk został kliknięty. Problemem jest to, że działa ona 90% czasu, ale czasami mam wyjątek poniżej -
java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path 'http://localhost:8090/myapp/save': {public java.lang.String com.myapp.SaveController.save(MyEntity,javax.servlet.http.HttpSession), public java.lang.String com.myapp.SaveController.saveAndRenew(MyEntity,javax.servlet.http.HttpSession)}
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:248)
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:194)
dziwnie, kiedy to się dzieje, a ja ponownie przesłać stronę, wszystko działa dobrze, potem. Czy istnieje lepszy sposób osiągnięcia tego, co próbuję zrobić?
Dzięki!
nie wiem, czy jego problem, ale należy pamiętać, niektóre przeglądarki przyzwyczajenie wysłać parę klucz/wartość jakichkolwiek przycisków, jeśli użytkownik wysyła formularz za pomocą klawisza Enter lub niektórych innych metod oprócz kliknięcia przycisku. Dlatego należy przyjąć domyślną akcję, która dla zgodności przeglądarki musi być działaniem * pierwszego przycisku * w źródle HTML tego formularza. – goat