Sto cercando di inviare 2 pulsanti di invio a un modulo, con ogni azione di pulsante associata a diversi controller. Qui sono i miei mappatureSpring MVC - Pulsante di invio multiplo a un modulo
@RequestMapping(value="/save", method=RequestMethod.POST, params="save")
@RequestMapping(value="/save", method=RequestMethod.POST, params="renew")
E i miei bottoni presentare guardare come questi -
<input type="submit" name="save" class="button" value="Save" />
<input type="submit" name="renew" class="button" value="Renew" />
Come si può vedere dalla mia mappatura, sto contando sulla uso di params per differenziare ciò che il pulsante è stato cliccato. Il problema è che funziona il 90% del tempo, ma a volte ho l'eccezione qui sotto -
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)
Stranamente, quando questo accade ed io pagina ri-presentare, tutto funziona bene in seguito. C'è un modo migliore per ottenere ciò che sto cercando di fare?
Grazie!
non è sicuro se il tuo problema, ma di tenere presente alcuni browser solito inviare la coppia chiave/valore dei pulsanti se l'utente invia il modulo tramite tasto invio o altri metodi oltre a fare clic sul pulsante. Quindi, assicurati di assumere un'azione predefinita, che, per la compatibilità del browser, deve essere l'azione del * primo pulsante * nel sorgente html di quel modulo. – goat