2012-06-14 40 views
0

值我有三個領域類如何displaydomain在GSP

class Stock 
{ 
    Product product 
} 

class Product 
{ 
    ProductName productName 
} 

class ProductName 
{ 
    String name 
} 

庫存域create.gsp,這是默認的代碼代: -

<tr class="prop"> 
    <td valign="top" class="name"> 
    <label for="name"> 
     <g:message code="stock.name.label" default="Product Name" /> 
    </label> 
    </td> 
    <td valign="top" class="value ${hasErrors(bean: stockInstance, field: 'name', 'errors')}"> 
    <g:select name="product.id" 
       from="${com.ten.hp.his.pharmacy.Product.list()}" 
       optionKey="id" 
       optionValue="productName" 
       value="${stockInstance?.product?.id}" /> 
    </td> 
</tr> 

我的要求是在下拉菜單中顯示產品名稱,但通過使用optionValue,它顯示productName id,例如com.ten.ProductName:1。我如何在下拉菜單中顯示產品名稱。

回答

2

Jigar答案是正確的根據你的數據模型。 grails select標籤期望optionValue是元素(Product)的bean屬性的名稱。 select標籤將在該值上調用toString(),以便使用此值,您需要重寫ProductName類的toString()方法。

也可以通過傳遞一個閉包代碼作爲optionValue來在gsp中指定想要ProductName的「name」屬性。

optionValue="${{it.productName.name}}" 
2

覆蓋toString()ProductName類只返回productName

class ProductName 
{ 
    String name 

    @Override 
    public String toString(){ return name } 
} 
+0

thnks,但是我們不能在create.gsp頁面上做些什麼來顯示產品名稱嗎? –

+1

不確定試着用'optionValue =「productName.name」' –

+0

我試過這個,但它不工作。 –