Spring MVC Post Form Submit AJAX jQuery.失败,出现415不支持的媒体类型



我试图遵循本教程,但我无法将其用于我的项目:

Spring MVC Post Form Submit AJAX jQuery

这是我的全部jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="spring"uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/li/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <link href="<c:url value='/static/css/bootstrap.css' />"  rel="stylesheet"></link>
        <link href="<c:url value='/static/css/app.css' />" rel="stylesheet"></link>
        <link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.2.0/css/font-awesome.css" />       
        <title>cineUdeA</title>
        <script src="http:////code.jquery.com/jquery-1.10.2.js"></script>
        <script type="text/javascript">
            $(document).ready(function () {         
                $('#formulario').submit(function (e) {   
                    var frm = $('#formulario'); 
					var data = {};
                    var Form = this;
                    $.each(this, function (i, v) {
                        var input = $(v);
                        data[input.attr("name")] = input.val();
                        delete data["undefined"];
                    });
                    $.ajax({
                        
                        contentType: 'application/json',
                        type: frm.attr('method'), 
                        url: frm.attr('action'), 
                        dataType: 'json', 
                        data: JSON.stringify(data), 
                        success: function (programacion) {           
                            alert("Response: id: " + programacion.idProgramacion + "Sala: " + programacion.sala + "  Pelicula: " + programacion.pelicula + "  hora: " + programacion.hora);
                            $(this).html("Success!");
                        },
                        error: function () {
                            $(this).html("Error!");
                        }
                    });
                });
            });
        </script>
    </head>
    <body>
    <form:form   commandName="programacion" method="post" action="insertarProgramacion"  id="formulario" >
        <fieldset>
            <legend>Detalles de programacion</legend>
            <ol>
                <font color="black">
                    <%--<form:hidden path="idProgramacion"/>--%> 
                    <li>                
                        <p><label for=idProgramacion>id:</label>       
                            <form:input path="idProgramacion"  type="text" required="true"/></p>
                    </li>
                    <li>
                        <p><label for=sala>Sala:</label>       
                            <form:input path="sala"  type="text" required="true"/></p>
                    </li>
                    <li>
                        <p><label for=pelicula>Pelicula:</label>       
                            <form:input path="pelicula" type="text" required="true"/></p>
                    </li>
                    <li>
                        <p><label for=hora>Hora:</label>                              
                            <form:input path="hora" type="text" required="true"/></p>
                    </li>
                </font>
            </ol>
        </fieldset>                    
        <fieldset>
            <button id="submitId" type="submit" class="btn btn-default">Guardar</button>
        </fieldset>
       
    </form:form>
</body>
</html>

这是我的控制器的一些部件

@Controller
public class ControladorFuncionario {
    
    @Autowired
    @Qualifier("programacionBean")
    private ProgramacionDAO ProgramacionDAO;
    @Autowired
    @Qualifier("usuarioBean")
    private UsuarioDAO UsuarioDAO;
@RequestMapping (value = {"/funcionario/gestionar_cartelera/nuevaProgramacion"} , method = RequestMethod.GET)
    public ModelAndView nuevaProgramacion(@ModelAttribute("programacion") Programacion programacion, ModelAndView model){
        
        Programacion nuevaProgramacion = new Programacion();
        model.addObject("programacion", nuevaProgramacion);
        
        model.setViewName("insertarProgramacion");                     
		model.setViewName("formulario_Programacion");
            
        return model;
    }
    
    
    @RequestMapping(value = {"/funcionario/gestionar_cartelera/insertarProgramacion"}, method = RequestMethod.POST) 
    @ResponseBody
    public Programacion informacionIngresada(@RequestBody Programacion programacion) {
        
        ProgramacionDAO.insertar_actualizar(programacion);
        return programacion;
        // new ModelAndView(redirect:/funcionario/gestionar_cartelera);
    }

这是我的依赖项:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.websystique.springsecurity</groupId>
    <artifactId>cineUdeA</artifactId>
    <version>1.0.0</version>
    <packaging>war</packaging>
    <url>http://maven.apache.org</url>
    <name>cineUdeA</name>
    <properties>
        <springframework.version>4.1.6.RELEASE</springframework.version>
        <springsecurity.version>4.0.1.RELEASE</springsecurity.version>
        <jackson.version>1.9.10</jackson.version>
    </properties>
    <dependencies>
        <!-- Spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${springframework.version}</version>
        </dependency>
        
        <!-- Spring Security -->
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>${springsecurity.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>${springsecurity.version}</version>
        </dependency>
        
        <!--javax servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!--jdbc-->      
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.2.0.RELEASE</version>
            <type>jar</type>
        </dependency>
        
        <!-- ajax -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.4.1.1</version>
        </dependency>
        
                        
        <!-- json -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-core-asl</artifactId>
            <version>1.9.13</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>
        
    </dependencies>
 
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.4</version>
                    <configuration>
                        <warSourceDirectory>src/main/webapp</warSourceDirectory>
                        <warName>SpringSecurityCusotmLoginFormAnnotationExample</warName>
                        <failOnMissingWebXml>false</failOnMissingWebXml>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
        <finalName>SpringSecurityCusotmLoginFormAnnotationExample</finalName>
    </build>
</project>

每当我尝试添加新的时间表(Programacion)时,我都会得到415不支持的媒体类型。我想我已经尝试了这个帖子上的所有内容:

415不支持的介质类型

最后,这是我的DTO:

package com.websystique.springsecurity.model;
public class Programacion {
    private String idProgramacion;
    private String sala;
    private String pelicula;
    private String hora;
  
    public Programacion(String idProgramacion, String sala, String pelicula, String hora) {
        super();
        this.idProgramacion = idProgramacion;
        this.sala = sala;
        this.pelicula = pelicula;
        this.hora = hora;
    }
    public Programacion() {
    }
    
    public String getHora() {
        return hora;
    }
    public void setHora(String hora) {
        this.hora = hora;
    }
    public String getIdProgramacion() {
        return idProgramacion;
    }
    public void setIdProgramacion(String idProgramacion) {
        this.idProgramacion = idProgramacion;
    }
    public String getSala() {
        return sala;
    }
    public void setSala(String sala) {
        this.sala = sala;
    }
    public String getPelicula() {
        return pelicula;
    }
    public void setPelicula(String pelicula) {
        this.pelicula = pelicula;
    }
}

Plz,我需要帮助!

这是因为您提交的是表单,而不是自己通过$.ajax处理发布请求。添加e.preventDefault()以防止表单被提交。

$('#formulario').submit(function (e) { 
    e.preventDefault(); //prevent the form from getting submitted
    //...
    //your code goes here
    //...
});

最新更新