Tôi đang cố gắng có 2 nút gửi bài đăng lên biểu mẫu, với mỗi thao tác nút được ánh xạ tới các bộ điều khiển khác nhau. Dưới đây là ánh xạ của tôiSpring MVC - Nút gửi nhiều biểu mẫu tới một Hình thức
@RequestMapping(value="/save", method=RequestMethod.POST, params="save")
@RequestMapping(value="/save", method=RequestMethod.POST, params="renew")
Và gửi các nút của tôi trông như thế này -
<input type="submit" name="save" class="button" value="Save" />
<input type="submit" name="renew" class="button" value="Renew" />
Như bạn có thể nhìn thấy từ bản đồ của tôi, tôi đang dựa vào việc sử dụng các params để phân biệt nút gì được nhấp vào. Vấn đề là nó hoạt động 90% thời gian nhưng đôi khi tôi có được ngoại lệ dưới đây -
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)
Kỳ lạ thay, khi điều này xảy ra và tôi nộp lại trang, tất cả mọi thứ hoạt động tốt sau đó. Có cách nào tốt hơn để đạt được những gì tôi đang cố gắng làm không?
Cảm ơn!
không chắc chắn nếu vấn đề của bạn mình, nhưng phải ghi nhớ một số trình duyệt sẽ không gửi các cặp khóa/giá trị của bất kỳ nút nếu người dùng gửi các hình thức thông qua phím enter hoặc một số phương pháp khác ngoài việc nhấp vào nút. Vì vậy, hãy đảm bảo giả định hành động mặc định, trong đó, đối với khả năng tương thích của trình duyệt cần phải là hành động của nút * đầu tiên * trong nguồn html của biểu mẫu đó. – goat