2014-09-05 57 views
1

我想學習如何使用Spring MVC和Hibernate構建應用程序。目前我堅持將複選框值插入MySQL數據庫。在Spring MVC中插入複選框值到數據庫中

我的數據庫表結構就像是以下幾點:

id name interest 

當我填寫了我的形式和點擊提交我收到此錯誤信息:

根源

值java.sql.SQLException :不正確的字符串值:'\ xAC \ xED \ x00 \ x05ur ...'用於第1行'interest'列 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1084) com.mysql.jdbc。 MysqlIO.checkErrorPacket(MYS qlIO.java:4232)

我想在我的表中插入值,以便插入後,它看起來像如下:

id name interest 
1 Steve PHP 
2 Steve Java 
3 Wuagh C# 
4 Wuagh PHP 

你能告訴我如何實現這一目標?如果可能的話,你是否也可以告訴我我怎樣才能做到這一點?

id name interest 
1 Steve PHP, Java 
2 Wuagh C#, PHP 

請參考下面我的代碼

我的表格:

<c:url var="action" value="/register" ></c:url> 
<form:form action="${action}" modelAttribute="subscriber" method="POST" > 

    <div> 
    <label>Name</label> 
    <form:input path="name"/> 
    <form:errors path="name" cssClass="error"/> 
    </div> 

    <div> 
    <label>Interests</label> 
    <form:checkboxes path="interest" items="${records.interests}"/>  
    </div> 

    <input type="submit" value="Submit"> 
</form:form> 

控制器:

package com.spring.org; 
@Controller 
public class HomeController { 

@Autowired 
private SubscriberService subService; 

@RequestMapping(value="/register", method= RequestMethod.GET) 
public ModelAndView RegistrationForm(@ModelAttribute Subscriber subscriber, BindingResult result) 
{ 

    HashMap<Integer, String> interest = new HashMap<Integer, String>(); 

    interest.put(1,"Java"); 
    interest.put(2,"PHP"); 
    interest.put(3, "C#"); 
    return new ModelAndView("regForm", "records", interest); 
} 


@RequestMapping(value="/register", method= RequestMethod.POST) 
public ModelAndView RegistrationFormSubmit(@ModelAttribute("subscriber") @Valid Subscriber subscriber, BindingResult result) 
{ 
    if (result.hasErrors()) { 

     return new ModelAndView("regForm"); 
    } 
    else 
    { 
     subService.addSubscriber(subscriber); 
     return new ModelAndView("redirect:/showList"); 
    } 
} 

} 

模式 - 用戶

@Entity 
@Table(name = "PERSON", schema = "java2") 
public class Subscriber { 

    @Id 
    @Column(name="ID") 
    @GeneratedValue 
    private int id; 

    @NotEmpty(message = "Please enter your Name.") 
    private String name; 
    private String[] interest; 

public String getName() {return name;} 
public void setName(String name) { this.name = name; } 
public String[] getInterest() { return interest; } 
public void setInterest(String[] interest) { this.interest = interest; } 

} 

SubscribeService實現:

@Service 
public class SubscriberServiceImpl implements SubscriberService{ 

@Autowired 
private SubscriberDao subsDao ; 

@Override 
public void addSubscriber(Subscriber subscriber) { 

    subsDao.addSubscriber(subscriber); 

} 
} 

SubscriberDao實現:

@Repository 
public class SubscriberDaoImpl implements SubscriberDao { 


@Autowired 
private SessionFactory sessionFactory ; 

public SessionFactory getSessionFactory() { 
    return sessionFactory; 
} 

public void setSessionFactory(SessionFactory sessionFactory) { 
    this.sessionFactory = sessionFactory; 
} 

@Override 
public void addSubscriber(Subscriber subscriber) { 

    getSessionFactory().openSession().save(subscriber);  

} 
} 

回答

0

This鏈接應該幫助你一些,還有documentation

這是一個數據綁定問題,表單將返回值作爲一個字符串,而不是它最初的任何類型。

相關問題