2010-07-26 34 views
14

Tôi cố gắng @RequestMapping(value = "/test", method = RequestMethod.POST) nhưng là lỗiTại sao SpringMVC Yêu cầu phương thức 'GET' không được hỗ trợ?

Mã được

@Controller 
public class HelloWordController { 
private Logger logger = LoggerFactory.getLogger(HelloWordController.class); 

@RequestMapping(value = "/test", method = RequestMethod.POST) 
public String welcome() { 
    logger.info("Spring params is welcome"); 
    return "/WEB-INF/jsp/welcome"; 
} 

} 

web.xml là

<servlet> 
<description>This is Spring MVC DispatcherServlet</description> 
<servlet-name>SpringMVC DispatchServlet</servlet-name> 
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
<init-param> 
    <description>SpringContext</description> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath*:springmvc.xml</param-value> 
</init-param> 
<load-on-startup>1</load-on-startup> 

<servlet-mapping> 
<servlet-name>SpringMVC DispatchServlet</servlet-name> 
<url-pattern>/</url-pattern> 

và springmvc.xml là

index.jsp được

<form action="<%=request.getContextPath() %>/test" method="post"> 
<input type="submit" value="submit"> 
</form> 

tôi đầu vào nộp botton Brower là lỗi

HTTP Status 405 - Yêu cầu phương pháp 'GET' không được hỗ trợ báo cáo Loại Status

nhắn Yêu cầu phương pháp 'GET' không hỗ trợ

Mô tả Các phương thức HTTP quy định không được phép cho các yêu cầu tài nguyên (Phương thức yêu cầu 'GET' không được hỗ trợ ).

+1

Bạn có thấy thông báo đăng nhập trong phương thức chào đón()? – naikus

+0

không, tôi có thể thấy nhật ký – EdwardLau

+0

Tôi vẫn chưa rõ cách giải quyết vấn đề này, không có câu trả lời hay nào ở đây. Không ai giải thích tại sao chúng ta không thể làm RequestMethod.POST. Ai đó có thể theo dõi? Tôi không hiểu bất kỳ bình luận nào. –

Trả lời

10

Thay đổi

@RequestMapping(value = "/test", method = RequestMethod.POST) 

Để

@RequestMapping(value = "/test", method = RequestMethod.GET) 
+7

Tại sao 'method = RequestMethod.POST' không hoạt động? Phương thức biểu mẫu là POST và URL hành động là/test, vì vậy tôi đã nghĩ rằng nó sẽ hoạt động. –

+1

@WebUser nó là một huyền thoại, một số nói tomcat vô hiệu hóa nó theo mặc định, vì vậy họ phải áp dụng bộ lọc trong web.xml nhưng điều gì sẽ xảy ra nếu một dev tạo một API với khung khởi động SPRING, thậm chí hôm nay vào năm 2016/tháng 3 lỗi, nhưng việc sử dụng GET làm việc sạch sẽ và hoàn hảo trong thanh địa chỉ.! Câu trả lời là người ta phải làm toàn bộ bảng điều khiển rồi viết các cuộc gọi Ajax tới Xóa/Đặt/Đăng để làm việc.! –

15

method = POST sẽ làm việc nếu bạn 'post' là một hình thức để các url/kiểm tra.

nếu bạn nhập url vào thanh địa chỉ của trình duyệt và nhấn enter, nó luôn là yêu cầu GET, vì vậy bạn phải chỉ định yêu cầu POST.

Google cho HTTP GETHTTP POST (có một số loại khác như PUT DELETE). Tất cả đều có ý nghĩa riêng của họ.

+0

Cảm ơn Napster +1! – Shraddha

+0

đây là giải thích rõ ràng nhất về lý do tại sao API Spring của tôi cung cấp 'GET' không được hỗ trợ khi tôi đang sử dụng RequestMethod.DELETE trong Bộ điều khiển của tôi.! –

0

tôi giải quyết lỗi này bằng cách đưa một GET và POST yêu cầu trong điều khiển của tôi: method = {RequestMethod.POST, RequestMethod.GET}

Các vấn đề liên quan