Я пытаюсь отправить 2 сообщения для отправки в форму, причем каждое действие кнопки отображается на разные контроллеры. Вот мои отображенияSpring MVC - кнопка отправки в форму
@RequestMapping(value="/save", method=RequestMethod.POST, params="save")
@RequestMapping(value="/save", method=RequestMethod.POST, params="renew")
И мои представить кнопки выглядят как эти -
<input type="submit" name="save" class="button" value="Save" />
<input type="submit" name="renew" class="button" value="Renew" />
Как вы можете видеть из моего отображения, я полагаться на использование Params различать, что кнопка была нажата на. Проблема заключается в том, что он работает на 90% от времени, но иногда я получаю ниже исключение -
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)
Как ни странно, когда это произойдет, и я повторно отправить страницу, все работает отлично после этого. Есть ли лучший способ достичь того, что я пытаюсь сделать?
Спасибо!
не уверен, если это ваша проблема, но имейте в виду, что некоторые браузеры обыкновение посылать ключ/значение пары любых кнопок, если пользователь отправляет форму с помощью клавиши ввода или некоторых других методов, кроме нажатия кнопки. Поэтому убедитесь, что вы принимаете действие по умолчанию, которое для совместимости браузера должно быть действием первой кнопки * в источнике HTML этой формы. – goat