2017-08-13 12 views
2

アカウントオブジェクトを休止状態に保存しようとしています。次のコードを見つけてください。Spring MVCのデータベースからドロップダウンリストからフォームをjspに保存

@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> 

データベースBeanクラスは、私は、データベース内の都市オブジェクトを保存することはできませんよobject.But私はすべてのFIRSTNME、姓と科目を休める、都市に1対1のマッピングを使用していたここ

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; 
    } 
} 

ですネットワークコンソールに表示さsaved.itsを取得しているが、データがdatabase.Pleaseに救われていないことは、私はあなたをthis.Thanking修正するのに役立つ。..

+0

Cityクラスを教えてください。 – sunkuet02

+0

Cityクラスを追加しました.. @ sunkuet02 – Darshan

答えて

1

dtoを作成することで、ドロップダウンから選択した値を維持し、そのために働くことができます。

0

<option value="${cityname}">${cityname.cityName}</option>

問題はCityオブジェクトにマップすることができないcityname.cityName(String)を送信することです。 は値として完全な都市オブジェクトを送信します。 Hibernateはマッピングを処理します。

+0

が動作していません.. – Darshan

関連する問題