Grails 如何从另一个域呈现gsp页面中的字段?
以下是我的设想:Grails 如何从另一个域呈现gsp页面中的字段?,grails,groovy,gsp,Grails,Groovy,Gsp,以下是我的设想: Class Domain1 { static hasMany=[ tests : Domain2 ] static constraints = { tests(nullable: true) } } 及 我需要在domain1中显示domain2中的t1,并具有编辑功能 我需要在domain1中显示domain2中的t1,并具有编辑功能 请参阅上的项目 : : : : 简单演示 ${d2.t2} 是否要在网页中呈现一个文本字段列表,一个用于d1中每个元素的t1。测试
Class Domain1 {
static hasMany=[ tests : Domain2 ]
static constraints = { tests(nullable: true) }
}
及
我需要在domain1中显示domain2中的t1,并具有编辑功能
我需要在domain1中显示domain2中的t1,并具有编辑功能
请参阅上的项目
:
:
:
:
简单演示
${d2.t2}
是否要在网页中呈现一个文本字段列表,一个用于d1中每个元素的t1
。测试
?是。这就是我的想法。我有点迷路了。我试着使用g:textField
类似它更像
,其中domain1VarName
是指向Domain1
实例的模型变量的名称。我试过了。问题是它用id显示整个域值,类似于表示域类和相应id的Domain1:10
。我想在这里显示t1
的确切值,如果没有值,我希望能够添加一个新值。这听起来不对。如果value
属性是${domain1VarName.t1}
并且domain1VarName
指向Domain1
的一个实例,那么将呈现该实例t1
的值,而不是实体id。t1
的值可能恰好与id
的值相同,但是t
在Domain2
中是一个Double
,可以有任何价值。这非常有用。在另一种方法中,是否可以从domain1的网页中创建一个新的domain2对象作为字段?“是否可以从domain1的网页中创建一个新的domain2对象作为字段?”-当然可以。您可以在gsp中放入您喜欢的任何表单字段,然后使用它们在服务器上创建您喜欢的任何域对象。您介意提供一个使用上述场景中的domain1和domain2的示例吗?
Class Domain2 {
Double t1, String t2
static constraints={
t1(nullable:true
t2(nullable:false,blank:false)
}
}
package samdomain
class Domain1 {
static hasMany = [tests: Domain2]
}
package samdomain
class Domain2 {
Double t1
String t2
static constraints = {
t1 nullable: true
}
}
package samdomain
class DemoController {
def index() {
def d1 = new Domain1()
d1.addToTests t1: 42, t2: 'Fourty Two'
d1.addToTests t1: 2112, t2: 'Twenty One Twelve'
[domainInstance: d1]
}
def update() {
render "Updated values: ${params.t1Values}"
}
}
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<meta name="layout" content="main"/>
<title>Simple Demo</title>
</head>
<body>
<g:form action="update" method="POST">
<table>
<g:each var="d2" in="${domainInstance.tests}">
<tr>
<td>${d2.t2}</td>
<td><g:textField name="t1Values" value="${d2.t1}"/></td>
</tr>
</g:each>
</table>
<g:submitButton name="Update"/>
</g:form>
</body>
</html>