让我介绍一下背景。
我有一个存储用户数据的域模型,我有一个用于用户电话号码的单独域模型,因为他们可以拥有超过 1 个,因此一个用户可以拥有多个电话号码。
我将用户的数据存储在系统中,并为该用户说 2 个电话号码。然后在一个页面上,我有选择列表,该列表旨在调用控制器上的操作,然后将该用户电话号码数据传递回要呈现的视图。
每个元素的代码如下:
控制器功能:
def getNumbers = {
def user = User.get(params.phoneId.toInteger())
[phones: user.phones]
}
风景:
<g:select id="users" name="user_field" from="${Users}"
optionKey="id"
optionValue="name"
noSelection="['':'-Choose a Name-']"
onchange="${remoteFunction(action: 'getNumbers',
update: [success: 'great', failure: 'ohno'],
params: [userId: this.value ],
options: '[asynchronous: false]')}" />
<g:each in="${phones?}" var="a" status="i">
<div>
<g:textField name="number" required="" value="${phones?.data}"/>
</div>
</g:each>
运行此代码时,确实对 Action getNumbers 进行了调用,但是由于某种原因,我收到以下错误消息:
| Error 2013-07-03 14:25:37,700 [http-bio-8080-exec-1] ERROR errors.GrailsExceptionResolver - NumberFormatException occurred when processing request: [POST] /app/user/getNumbers - parameters:
userId: null
For input string: "null". Stacktrace follows:
User: For input string: "null"
奇怪的是,传递的参数将为空,因为我将此列表中的数据也通过下面的 JavaScript 显示在页面上的文本框中,并且值不为空并正确显示:
document.getElementById("verification").innerHTML = "<br />" + this.value;
我希望有人可以帮助我纠正这个问题,甚至告诉我另一种方法来实现我想要的。
提前致谢。