gpt4 book ai didi

ajax - Grails选择RemoteFunction不起作用?

转载 作者:行者123 更新时间:2023-12-02 15:32:29 24 4
gpt4 key购买 nike

让我给一点背景。

我有一个存储用户数据的域模型,我有一个单独的域模型来处理用户的电话号码,因为他们可以拥有超过1个,因此一个用户可以有多个电话号码。

我将用户的数据存储在系统中,并为该用户说2个电话号码。然后在页面上,我具有“选择”列表,该列表旨在调用 Controller 上的操作,然后将该用户的电话号码数据传递回要呈现的 View 。

每个元素的代码如下:

Controller 功能:

def getNumbers = {

def user = User.get(params.phoneId.toInteger())

[phones: user.phones]
}

View :
<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"

奇怪的是,传递的参数为null,因为我拥有此列表中的数据,还通过下面的JavaScript在页面上的文本框中显示了该值,该值不为null并正确显示:
document.getElementById("verification").innerHTML = "<br />" + this.value;

我希望有人可以帮助我纠正这个问题,甚至告诉我另一种实现我想要的方式的方法。

提前致谢。

最佳答案

尝试以下步骤:

1-创建模板:_phones.gsp

<g:each in="${phones?}" var="a" status="i">
<option value="${phones?.data}">${phones?.data}</option>
</g:each>

2-在您的第一个选择中:
<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]')}" />

3-在第二选择中,输入以下内容:
<select id="great">
</select>

4-在您的 Controller 中:
def getNumbers = {
    // You get the phones by User.id, i thik so :-) 'users' is a first select and contains the id selected, and provide the find in phones.
def user = User.get(params.users.toInteger())

[phones: user.phones]
}

非常抱歉我的英语不好;-)

关于ajax - Grails选择RemoteFunction不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17450294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com