如何从另一个域呈现 gsp 页面中的字段?
Posted
技术标签:
【中文标题】如何从另一个域呈现 gsp 页面中的字段?【英文标题】:How do I render a field in the gsp page from another domain? 【发布时间】:2021-08-09 00:26:13 【问题描述】:这是我的场景:
Class Domain1
static hasMany=[ tests : Domain2 ]
static constraints = tests(nullable: true)
和
Class Domain2
Double t1, String t2
static constraints=
t1(nullable:true
t2(nullable:false,blank:false)
我需要在 domain1 中显示 domain2 中的 t1 并具有编辑功能。
【问题讨论】:
是否要在网页中呈现一个文本字段列表,其中一个用于d1.tests
中每个元素中的t1
?
是的。这就是想法。我有点失落。我尝试像<g:textField domain = "Domain1' name="tests" value="$tests.t1" />
一样使用g:textField
。
这更像是<g:textField name="t1" val="$domain1VarName.t1"/>
,其中domain1VarName
是指向Domain1
实例的模型变量的名称。
我试过了。问题是它显示带有 id 的整个 Domain 值,例如 Domain1:10
表示域类和相应的 id。我想在这里显示t1
的确切值,如果没有值,我希望能够添加一个新值。
这听起来不对。如果value
属性是$domain1VarName.t1
并且domain1VarName
指向Domain1
的实例,那么将呈现该实例的值t1
,而不是实体ID。可能是t1
的值恰好与id
相同,但t
是Domain2
中的Double
,可以有任何值。
【参考方案1】:
我需要在 domain1 中显示 domain2 中的 t1 并具有编辑功能。
在https://github.com/jeffbrown/samdomain查看项目。
grails-app/domain/samdomain/Domain1.groovy:
package samdomain
class Domain1
static hasMany = [tests: Domain2]
grails-app/domain/samdomain/Domain2.groovy:
package samdomain
class Domain2
Double t1
String t2
static constraints =
t1 nullable: true
grails-app/controllers/samdomain/DemoController.groovy:
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"
grails-app/views/demo/index.gsp:
<%@ 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>
【讨论】:
这很有帮助。在另一种方法中,是否可以从 domain1 的网页中创建一个新的 domain2 对象作为字段? " 是否可以从 domain1 的网页中创建一个新的 domain2 对象作为字段?" - 确实。您可以在 gsp 中放置您喜欢的任何表单字段,然后使用它们在服务器上创建您喜欢的任何域对象。 您介意提供一个使用上述场景中的 domain1 和 domain2 的示例吗?以上是关于如何从另一个域呈现 gsp 页面中的字段?的主要内容,如果未能解决你的问题,请参考以下文章
在 GSP 中打印时在变量中评估 Groovy/Grails 代码