簡體   English   中英

在Spring MVC中無法從jsp中填充模型

[英]not getting model filled from jsp in spring mvc

即使添加@ModelAttribute,也存在相同的錯誤我無法在單擊jsp的按鈕時填充模型類 在數據庫中,將創建一個新字段,但值將為空 (因為未填充模型)。 請幫助我。 提前致謝。

我的模型課是:

package model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "conversion")
public class Conversion {

    @Id
    @GeneratedValue
    private int conversionId;

    @Column(name = "conversionFrom")
    private String conversionFrom;

    @Column(name = "conversionFromValue")
    private int conversionFromValue;

    @Column(name = "conversionTo")
    private String conversionTo;

    @Column(name = "conversionToValue")
    private int conversionToValue;

    @Column(name = "conversionDate")
    private Date conversionDate;

    public int getConversionId() {
        return conversionId;
    }

    public void setConversionId(int conversionId) {
        this.conversionId = conversionId;
    }

    public String getConversionFrom() {
        return conversionFrom;
    }

    public void setConversionFrom(String conversionFrom) {
        this.conversionFrom = conversionFrom;
    }

    public int getConversionFromValue() {
        return conversionFromValue;
    }

    public void setConversionFromValue(int conversionFromValue) {
        this.conversionFromValue = conversionFromValue;
    }

    public String getConversionTo() {
        return conversionTo;
    }

    public void setConversionTo(String conversionTo) {
        this.conversionTo = conversionTo;
    }

    public int getConversionToValue() {
        return conversionToValue;
    }

    public void setConversionToValue(int conversionToValue) {
        this.conversionToValue = conversionToValue;
    }

    public Date getConversionDate() {
        return conversionDate;
    }

    public void setConversionDate(Date conversionDate) {
        this.conversionDate = conversionDate;
    }

}

我的控制器方法是:

@RequestMapping("/saveConversion")
    public ModelAndView saveConversion(HttpServletRequest request, HttpServletResponse response, Model model,
            Conversion conversion) throws ServletException, IOException, ParseException {
        System.out.println("In saveConversion");
        Boolean boolean1 = serviceDao.setConversion(conversion);
        if (boolean1) {
            model.addAttribute("conversionSaved", "Conversion saved successfully!");
        } else {
            model.addAttribute("conversionSaved", "Conversion Not saved!");
        }
        return new ModelAndView("setConversion");
    }

我的Jsp是:

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@page import="model.Test"%>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Lexis Nexis Admin Set Conversion Page</title>
<!--css and js starts-->
<link type="text/css" rel="stylesheet" href="css/stylesheet.css" />
<script src="jQueryAssets/jquery_lib.js"></script>
<script>
    function SaveConversion() {
        var params = $("#Conversion_form").serialize();
        alert(params);
        $.ajax({
            method : "POST",
            url : "saveConversion",
            data : {
                'params' : params
            },
            success : function(result) {
                alert(result);
                $("#responseDiv").html(result);
                messageDisplay();
                return false;
            }
        })
    }
    function messageDisplay() {
        alert("${conversionSaved}");
    }
</script>
</head>
<body onload="clearData()">
    <div class="mainpage">
        <div class="add_admin_form">
            <form id="Conversion_form" method="post" name="Conversion">
                <div class="add_admin_form_label">
                    <spring:message code="CONVERSION_FROM" />
                </div>
                <div class="add_admin_form_field">
                    <select name="conversionFrom" id="conversionFrom" class="dropdown2">
                        <option value="USD"><spring:message code="USD" /></option>
                        <option value="INR"><spring:message code="INR" /></option>
                    </select> <input name="conversionFromValue" id="conversionFromValue"
                        type="text" class="textbox1" value="${conversion.conversionFromValue}" required />
                </div>
                <div class="add_admin_form_label">
                    <spring:message code="CONVERSION_TO" />
                </div>
                <div class="add_admin_form_field">
                    <select name="conversionTo" id="conversionTo" class="dropdown2">
                        <option value="INR"><spring:message code="INR" /></option>
                        <option value="USD"><spring:message code="USD" /></option>
                    </select> <input name="conversionToValue" id="conversionToValue" type="text"
                        class="textbox1" required />
                </div>
                <div class="add_admin_form_field">
                    <input type="button" value="" class="create"
                        onclick="SaveConversion()" />
                </div>
            </form>
        </div>
    </div>
    <div class="clear"></div>
    <div class="clear"></div>
</body>
</html>

我的hibernate.cfg.xml是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<!-- Generated file - Do not edit! -->

<hibernate-configuration>

    <!-- a SessionFactory instance listed as /jndi/name -->
    <session-factory>

        <!-- User / Password -->
        <property name="connection.username">root</property>
        <property name="connection.password"></property>

        <!-- Database Settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- for performance reasons changed to MyISAM from org.hibernate.dialect.MySQLInnoDBDialect -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/quotebuilder</property>

        <property name="hibernate.connection.CharSet">utf8</property>
        <property name="hibernate.connection.characterEncoding">utf8</property>
        <property name="hibernate.connection.useUnicode">true</property>


        <!-- Database Scheme Auto Update -->
        <property name="hbm2ddl.auto">update</property>

        <!-- properties -->

        <property name="show_sql">true</property>
        <property name="use_outer_join">false</property>
        <property name="hibernate.query.factory_class">org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory</property>
        <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
        <!-- <property name="connection.provider_class ">org.hibernate.connection.C3P0ConnectionProvider</property> -->
        <property name="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <property name="hibernate.cache.use_query_cache">false</property>
        <property name="hibernate.cache.use_second_level_cache">false</property>
        <property name="hibernate.generate_statistics">false</property>
        <property name="hibernate.cache.use_structured_entries">false</property>


        <property name="hibernate.c3p0.max_size">20</property>
        <property name="hibernate.c3p0.min_size">2</property>
        <property name="hibernate.c3p0.idle_test_period">100</property>
        <property name="hibernate.c3p0.max_statements">100</property>
        <property name="hibernate.c3p0.timeout">100</property>

        <!-- mapping files -->
        <mapping class="model.User" />
        <mapping class="model.Quotation" />
        <mapping class="model.CustomerSize" />
        <mapping class="model.CustomerSegment" />
        <mapping class="model.Admin" />
        <mapping class="model.Customer" />
        <mapping class="model.CustomerTypeDiscount" />
        <mapping class="model.EmployeeLevelDiscount" />
        <mapping class="model.Product" />
        <mapping class="model.ProductVolumeDiscount" />
        <mapping class="model.TitleAuthorTag" />
        <mapping class="model.TitleContentTag" />
        <mapping class="model.Conversion" />

    </session-factory>

</hibernate-configuration>

Dispatcher-servlet是:

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

    <bean id="login" class="controller.LoginController" />
    <bean id="levelManagement" class="controller.LevelManagementController" />
    <bean id="user" class="controller.UserController" />
    <bean id="home" class="controller.HomeController" />
    <bean id="report" class="controller.ReportController" />

    <bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basenames" value="WEB-INF/properties/messages" />
    </bean>

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix">
            <value>/WEB-INF/jsp/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>

</beans>

web.xml是:

<web-app 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_3_0.xsd"
    version="3.0">

    <display-name>Archetype Created Web Application</display-name>

    <servlet>
        <servlet-name>spring-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-dispatcher-servlet.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet-mapping>
        <servlet-name>spring-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.gif</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.png</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>/WEB-INF/jsp/index.jsp</welcome-file>
    </welcome-file-list>

</web-app>

pom.xml是:

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.logiquebrain</groupId>
    <artifactId>QuoteBuilderAdmin</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>QuoteBuilderAdmin Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>3.0.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.9</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.37</version>
        </dependency>

        <!-- Hibernate core -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.0.2.Final</version>
        </dependency>

        <!-- optional -->

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-osgi</artifactId>
            <version>5.0.2.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-envers</artifactId>
            <version>5.0.2.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-c3p0</artifactId>
            <version>5.0.2.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-proxool</artifactId>
            <version>5.0.2.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-infinispan</artifactId>
            <version>5.0.2.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-ehcache</artifactId>
            <version>5.0.2.Final</version>
        </dependency>

        <!-- Add on 03-12-2015 -->

        <!-- <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-annotations</artifactId> 
            <version>3.3.1.GA</version> </dependency> <dependency> <groupId>dom4j</groupId> 
            <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> 
            <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> 
            <version>1.1.1</version> </dependency> <dependency> <groupId>commons-collections</groupId> 
            <artifactId>commons-collections</artifactId> <version>3.2.1</version> </dependency> 
            <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.2</version> 
            </dependency> <dependency> <groupId>asm</groupId> <artifactId>asm</artifactId> 
            <version>3.1</version> </dependency> <dependency> <groupId>javax.transaction</groupId> 
            <artifactId>jta</artifactId> <version>1.1</version> </dependency> <dependency> 
            <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> 
            <version>2.5.1</version> </dependency> -->

        <!-- Add on 03-12-2015 -->

        <!-- Add on 04-12-2015 -->

        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>3.0.3.RELEASE</version>
        </dependency>

        <!-- Add on 04-12-2015 -->

        <!-- Add on 07-12-2015 -->

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4</version>
        </dependency>

        <!-- Add on 07-12-2015 -->


    </dependencies>
    <build>
        <finalName>QuoteBuilderAdmin</finalName>

        <!-- Add on 07-12-2015 -->

        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>

        <!-- Add on 07-12-2015 -->
    </build>
</project>

如果您想讓Spring自動將提交的參數綁定到Conversion實例,則需要在方法簽名中使用@ModelAttribute批注。

 @RequestMapping("/saveConversion")
 public ModelAndView saveConversion(@ModelAttribute Conversion conversion, Model model) throws ServletException, IOException, ParseException {

    System.out.println("In saveConversion");

    Boolean boolean1 = serviceDao.setConversion(conversion);

    if (boolean1) {
    model.addAttribute("conversionSaved", "Conversion saved successfully!");
    } else {
    model.addAttribute("conversionSaved", "Conversion Not saved!");
    }

    return new ModelAndView("setConversion");
}

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-modelattrib-method-args

方法參數上的@ModelAttribute指示應從模型中檢索參數。 如果模型中不存在該參數,則應首先實例化該參數,然后將其添加到模型中。 一旦出現在模型中,則應從具有匹配名稱的所有請求參數中填充參數的字段。 這在Spring MVC中稱為數據綁定,這是一種非常有用的機制,使您不必分別解析每個表單字段。

按照@alan進行更改,並對您的js函數進行以下更改:

function SaveConversion() {
    var params = $("#Conversion_form").serialize();
    alert(params);
    $.ajax({
        method : "POST",
        url : "saveConversion",
        data : params, //this line is changed
        success : function(result) {
            alert(result);
            $("#responseDiv").html(result);
            messageDisplay();
            return false;
        }
    })
}

根據問題,js函數僅發送一個參數“ param”,該參數具有序列化表格值的值。 完成上述更改后,它應該可以工作了。 我已經使用瀏覽器的“網絡”標簽驗證了相同的內容。 如果需要,您可以自己查看。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM