【发布时间】:2015-12-03 12:45:16
【问题描述】:
我是 Grails 和 Groovy 的新手。我正在尝试从两个域类创建一个表单,但它没有更新两个域。
1) 我的域类是:a)
class Alacat { String email String name Date startdate = new Date() Date
enddate = new Date() String starttime String endtime boolean roadclose
static belongsTo = [user : User]
String toString() { return "User of $name (id: $id)" }
String getDisplayString() { return name }
static constraints = {
email email: true, blank: false
name blank: false
startdate blank: false
enddate blank: false
starttime nullable: true
endtime nullable: true
roadclose blank: false
alertuser nullable: false
}
}
(b)
class User {
String loginId
Set alerts=[]
static hasMany = [ alerts : Alacat ]
static constraints = {
loginId size: 3..20, blank: false
}
}
2)我的控制器(UserController)逻辑是:
def createalert() {
if (request.method == "POST") {
def user = new User(params)
if (user.validate()) {
user.save()
flash.message = "Successfully Created User"
redirect(uri : '/User/createalert')
} else {
flash.message = "Error Creating User"
return [ user : user]
}
}
}
3) createalert.gsp 视图类:
<g:form action="createalert">
<fieldset class="form">
<div class="fieldcontain required">
<label for="loginId">Login ID</label>
<g:textField name="loginId" value="${user?.loginId}"/>
</div>
<div class="fieldcontain required">
<label for="alerts.email"> Email address:</label>
<g:textField name="alerts.email"
value="${user?.alerts?.email}"/>
</div>
<div class="fieldcontain required">
<label for="alerts.name">Name & Title:</label>
<g:textField name="alerts.name"
value="${user?.alerts?.name}"/>
</div>
<div class="fieldcontain required">
<label for="alerts.startdate">Start Date Notice:</label>
<g:datePicker name="alerts.startdate" value="${new Date()
}" precision="day" />
</div>
<div class="fieldcontain required">
<label for="alerts.enddate">End Date Notice:</label>
<g:datePicker name="alerts.enddate" value="${new Date() }"
precision="day" />
</div>
<div class="fieldcontain required">
<label for="alerts.starttime">(optional) St Time:</label>
<g:textField name="alerts.starttime"
value="${user?.alerts?.starttime}"/>
</div>
<div class="fieldcontain required">
<label for="alerts.endtime">(optional) E-Time:</label>
<g:textField name="alerts.endtime"
value="${user?.alerts?.endtime}"/>
</div>
<div class="fieldcontain required">
<label for="roadclose">closed 24-hours?</label>
<g:radioGroup name="roadclose"
labels = "[ 'Yes', 'No']"
values="[ 'Y', 'N' ]"
value = "Y">
${it.label} ${it.radio}
</g:radioGroup>
</div>
</fieldset>
<fieldset class="buttons">
<g:submitButton name="createalert" value="Create Alert"/>
<g:link action="createalert">Back to Create Information </g:link>
</fieldset>
注意:我的问题是只创建了用户域(用户 - loginId)信息,而 Alacat 没有任何内容。我希望使用 createalert 表单创建来自两个域(用户和 Alacat)的属性。运行时我没有收到任何错误。
【问题讨论】:
标签: grails