Grails 如何在gsp中显示域值
我有三个域类Grails 如何在gsp中显示域值,grails,groovy,Grails,Groovy,我有三个域类 class Stock { Product product } 及 及 在Stock domain的create.gsp中,这是默认代码生成:- <tr class="prop"> <td valign="top" class="name"> <label for="name"> <g:message code="stock.name.label" default="Product Name" />
class Stock
{
Product product
}
及
及
在Stock domain的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
。如何在下拉列表中显示产品名称。在类ProductName
中重写toString()
以仅返回ProductName
像
在类ProductName
中重写toString()
,只返回ProductName
像
根据您的数据模型,Jigar的答案是正确的。grails select标记希望optionValue是元素(产品)的bean属性的名称。select标记将对该值调用toString(),因此要使用该值,您需要覆盖ProductName类的toString()方法 还可以通过将闭包代码作为optionValue传递,在gsp中指定您想要ProductName的“name”属性
optionValue="${{it.productName.name}}"
根据您的数据模型,Jigar的答案是正确的。grails select标记希望optionValue是元素(产品)的bean属性的名称。select标记将对该值调用toString(),因此要使用该值,您需要覆盖ProductName类的toString()方法 还可以通过将闭包代码作为optionValue传递,在gsp中指定您想要ProductName的“name”属性
optionValue="${{it.productName.name}}"
thnks,但是我们不能在create.gsp页面中显示产品名称吗?不确定尝试使用
optionValue=“productName.name”
它会显示如下异常:-没有这样的属性:productName.name for class:com.ten.hp.his.pharmacy.ProductTry withoptionValue=“${it.produceName.name}”
thnks,但是我们不能在create.gsp页面中显示产品名称吗?不确定是否尝试使用optionValue=“productName.name”
它会显示如下异常:-没有这样的属性:productName.name for class:com.ten.hp.his.pharmacy.ProductTry withoptionValue=“${it.produceName.name}}”
class ProductName
{
String name
@Override
public String toString(){ return name }
}
optionValue="${{it.productName.name}}"