2015-09-15 74 views
0

我有一個春天覆選框:春複選框堅持失敗

<spring:url value="/car/save" var="formUrl"/> 

    <form:form action="${formUrl}" method="POST" modelAttribute="car"> 

     <div class="form-group"> 
       <label for="equipment">Equipment</label> 
       <form:checkboxes path="equipment" id="equipment" items="${equipmentList}"/> 
     </div> 

    <button type="submit" class="btn btn-default">Submit</button> 

</form:form> 

的Controler看起來是這樣的:

@RequestMapping(value="/add",method=RequestMethod.GET) 
public String addCar(Model model){ 

    List<String> equipment = new LinkedList<>(Arrays.asList(new String[]{"AC","ABS","ESP","GPS","Cabrio"})); 

    model.addAttribute("car",new Car()); 
    model.addAttribute("equipmentList",equipment); 
    return "addCar"; 
} 

和汽車實體:

@Entity 
@Table(name="CAR") 
public class Car { 

@Id 
@Column(name="CAR_ID") 
@GeneratedValue(strategy=GenerationType.IDENTITY) 
private Long carId; 

@Column(name="EQUIPMENT") 
private String[] equipment; 
} 

當我第一次嘗試堅持的Car實體,我得到一個異常,因爲數據庫表的值太長。我將它改爲200個字符,但現在我最終得到: enter image description here 如何從Spring複選框存儲值?

回答

0

在JPA中存儲屬性集合有不同的方法。您可以讓JPA使用分隔符(例如「|」)將字符串屬性存儲在VARCHAR單元格中。或者,您可以在Car實體和Attribute(Equipment)實體(JOIN)之間創建更復雜的關聯。我寧願選擇後者,因爲我喜歡E-R約束,並且可以靈活地向這些屬性添加字段(例如描述)。 你的'設備'應該是一組東西,或者一個列表,如果你允許多個條目具有相同的值。當您從POST表單中取回一個String []時,您將遍歷該數組並相應地更改/填充Set(JPA字段)。你現在可能存儲的是參考而不是值,這就是爲什麼你會得到這個亂碼。

同類問題JPA: Store a list of integers in a single field