spring mvc - Request method 'POST' not supported

0

Dlaczego dostaję Request method 'POST' not supported? Czy jeszcze coś powinienem skonfigurować?

 
package com.java.web;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class ProductController {

	@RequestMapping(value = "new", method = RequestMethod.GET)
	public String getRegistrationForm(Model model) {
		model.addAttribute("product", new Product());
		return "productForm";
	}

	@RequestMapping(value = "new", method = RequestMethod.POST)
	public String postRegistrationForm(Product product) {
		return "redirect:ok";
	}
}

package com.java.web;

public class Product {
	private String code;
	private String name;
	
	public Product(String code, String name) {
		super();
		this.code = code;
		this.name = name;
	}
	
	public Product(){}

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "Product [code=" + code + ", name=" + name + "]";
	}
}

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head><title>Rejestracja nowego użytkownika</title></head>
<body>
Tworzenie formularza HTML
<form:form action="." modelAttribute="product" method="post">
<div>Kod: <form:input path="code" /></div>
<div>Nazwa: <form:input path="name" /></div>
<div><input type="submit" value="Zarejestruj" /></div>
</form:form>
</body>
</html>
 
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/root-context.xml</param-value>
	</context-param>
	
	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- Processes application requests -->
	<servlet>
		<servlet-name>appServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
		
	<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

</web-app>

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

	<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
	
	<!-- Enables the Spring MVC @Controller programming model -->
	<annotation-driven />

	<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
	<resources mapping="/resources/**" location="/resources/" />

	<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>
	
	<context:component-scan base-package="com.java.web" />
	
	
	
</beans:beans>
 
0

action = "." bez kropki spróbuj. A najlepiej zobacz w konsoli w przeglądarce gdzie leci zapytanie i porównaj ze swoim zmapowanym URLem.

0

Bez kropki: WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/web/ok] in DispatcherServlet with name 'appServlet'
The requested resource is not available.
Z kropką: WARN : org.springframework.web.servlet.PageNotFound - Request method 'POST' not supported

0

no to bez kropki dobrze CI zadziało, ale źle przekierowujesz do tego widoku "ok"

0

To w jaki sposób mam inaczej przekierować?

0
@RequestMapping(value = "success", method = RequestMethod.GET)
    public String success() {
        return "ok";
    }

redirect:success
widok jako ok.jsp

ALE to moje mniemanie ;)

0

To ja nie rozumiem chyba co ty chcesz zrobić. Po kolei:
mapping masz na new i ma przekierować do widoku ok więc musisz mieć kontroler który mapuje ok i zwraca jakiś widok. O to ci chodzi?

1 użytkowników online, w tym zalogowanych: 0, gości: 1