2011-12-23 25 views
0

我在另一個類中使用了一個對象,該對象在使用spring mvc的窗體中用作命令對象,如下所示。如何使用註釋控制器在彈簧表單的命令對象內使用一個對象?

public class ManufacturerDO { 
int manufacturerID; 
String manufacturerName,manufacturerAddress; 
} 

這是我的命令下一個域對象object.My懷疑是如何得到這個域對象的字段在我的春天的形式。

我使用瞭如下嘗試:

<form:select path="productManufacturer.manufacturerID"> 
     <c:forEach var="manufacturer" items="${manufacturerList}"> 
      <form:option value="${manufacturer.manufacturerName}"> 
       <c:out value="${manufacturer.manufacturerName}" /> 
      </form:option> 
     </c:forEach> 
</form:select> 

但收到以下異常: 無效的屬性 'productManufacturer' bean類[com.global.onlineShop.ProductDO]的:嵌套的財產「的價值productManufacturer ' 一片空白。

在此先感謝

回答

1

1)您應該傳遞命令對象實例到視圖。我做這種方式:

public ModelAndView myFunc(ModelAndView model) { 
    /* .... */ 
    ManufacturerDO commandObject = new ManufacturerDO; 
    model.addObject("productManufacturer", commandObject); 
    return model; 
} 

(不過我建議使用自動裝配,而不是建立在控制器動作一個新的實例)提供關鍵

2)在JSTL的形式標記點參考commandObject:

<form:form method="post" commandName="productManufacturer"> 

3)當你提供JSTL形式標籤的命令對象,你可以跳過commandObject的所有表單元素JSTL標籤屬性「路徑」的名稱讓我們寫:

<form:select path="manufacturerID"> 

4)當然 - 不要忘記在一類命令對象中的getter和setter。

+1

我對產品使用上述方法,這是我的命令對象,其中包含productmanufacturer對象作爲field.now我想要訪問productManufacturer的數據fields.how來實現這一目標? – pavi 2011-12-23 08:29:15

+0

類ProductDO是否爲其現場產品製造商提供了getter? – 2011-12-23 11:40:23

+0

是的。包com.global.onlineShop; public class ProductDO { \t \t ManufacturerDO productManufacturer; (){ \t \t return productManufacturer; \t} \t公共無效setProductManufacturer(ManufacturerDO productManufacturer){ \t \t this.productManufacturer = productManufacturer; \t} \t }上面是productDO域對象,它是 – pavi 2011-12-23 13:35:32

相關問題