【问题标题】:Save a form in jsp with dropdown listfrom from database in Spring MVC使用 Spring MVC 中的数据库中的下拉列表在 jsp 中保存表单
【发布时间】:2017-08-13 17:55:55
【问题描述】:

我正在尝试将 Account 对象保存在休眠中。请找到以下代码。

@RequestMapping(value = "/saveAccount", method = RequestMethod.POST)
    public ModelAndView saveAccount(@ModelAttribute("account") Account account,
            BindingResult result) {
        Session session = sessionFactory.openSession();
        System.out.println(account.getFirstName());
        System.out.println(account.getLastName());
        System.out.println(account.getSubject());
        System.out.println(account.getCity().getCityName());
        session.save(account);
        return new ModelAndView("redirect:/form.html");
    }

我的 jsp 页面有一个包含名字、姓氏、城市和主题字段的表单。 我正在从数据库中获取城市下拉列表。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ 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/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h3>Contact Form</h3>
<div class="container">
  <form  method="post" action="/sdnext/saveAccount.html">
    <label for="fname">First Name</label>
    <input type="text" id="fname" name="firstName"   placeholder="Your name..">
    <label for="lname">Last Name</label>
    <input type="text" id="lname" name="lastName"  placeholder="Your last name..">
    <label for="country">City</label>

<select name="city" id="cityName" >
    <c:forEach var="cityname" items="${lists}">
        <option value="${cityname.cityName}">${cityname.cityName}</option>
    </c:forEach>
</select>

        <label for="subject">Subject</label>
    <textarea id="subject" name="subject"  placeholder="Write something.."  style="height:200px"></textarea>
    <input type="submit" value="Submit">
  </form>       

</div>  
</body>
</html>

DataBase bean 类在这里

package test.*;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name= "Account")
public class Account implements Serializable {

    /**
         * 
         */
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return LastName;
    }

    public void setLastName(String lastName) {
        LastName = lastName;
    }

    public City getCity() {
        return city;
    }

    public void setCity(City city) {
        this.city = city;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    private String firstName;

    private String LastName;

    @OneToOne
    private City city;

    private String subject;
}





package test.*;


@Entity
@Table(name= "City")
public class City implements Serializable {

  /**
         * 
         */
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    private String cityName;

    public String getCityName() {
        return cityName;
    }

    public void setCityName(String cityName) {
        this.cityName = cityName;
    }
}

我已经使用了与城市对象的一对一映射。但我无法将城市对象保存在数据库中,其余所有 firstNme、LastName 和主题都已保存。它显示在网络控制台中,但数据未保存在数据库中。请帮我解决这个问题。谢谢..

【问题讨论】:

  • 你能给我们看看你的城市班吗?
  • 我添加了 City 类 ..@sunkuet02

标签: spring hibernate jsp


【解决方案1】:

通过创建 dto,我们可以保留从下拉列表中选择的值。它对我有用。

【讨论】:

    【解决方案2】:

    &lt;option value="${cityname}"&gt;${cityname.cityName}&lt;/option&gt;

    问题是您发送的 cityname.cityName (String) 无法映射到 City 对象,所以, 发送完整的城市对象作为值。 Hibernate 将负责映射。

    【讨论】:

      猜你喜欢
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      • 2020-01-09
      • 2013-09-07
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多