这个问题是我问here的问题的延伸/类似问题。我在这个问题上遇到的具体问题已经解决了,但我还有另外一个非常类似的问题。
问题是create
视图中输入的“货物目的地”和“货物来源”值未显示在save
视图中。例如,当用户忘记在create
视图中输入必要的信息并按下“创建”按钮时,用户输入的值应显示在save
视图中。发生此情况时,除“货物目的地”和“货物资源”外的所有字段都会显示在save
视图中。
当我在println
控制器中放置save
语句时,我可以看到有问题的参数确实从save
视图中传到create
控制器
有问题的两个字段被链接到其他字段,并由一个AJAX填充,该AJAX转到Load
控制器中的闭包。我相信这个闭包是我的问题所在,在render
声明中:
def getAccountUserCargoDestinations = {
if(params.id == ""){
render g.select(name: 'cargoDestination.id')
return
}
def user = Account.find("from Account as account where account.id=:id", [id:Long.valueOf(params.id)]).user
def addresses = Address.find("from Address as addresses where addresses.user=:user and addresses.cargoDestination=true", [user:user])
render g.select(optionKey: 'id', from: addresses, name: 'cargoDestination.id')
}
如果那不是问题所在,那么它可能位于create
视图本身的相应字段中:
<g:select name="cargoDestination.id" optionKey="id" value="${loadInstance?.cargoDestination?.id}" />
还有两件事:
1。)Grails没有给我任何错误
2。)cargoDestination
和cargoSource
都是我所做的Address
课程的实例。
任何帮助都将不胜感激。
更新
继续寻找解决方案,我注意到了一些有趣的事情。首先,我将以下代码放在我的create
视图中(由Load控制器中的create
闭包呈现,并由Load Controller中的save
闭包重新呈现将任何字段留空):
<g:if test="${loadInstance?.cargoDestination?.id != null}">
${loadInstance?.cargoDestination}
</g:if>
通过执行此操作,我可以看到当create
闭包调用save
视图时,该参数将一直显示到<g:if> tags to get the desired results, but that just seems messy, and I doubt that is the "correct" way to solve this problem. I also wrapped my AJAX in a similar
视图。我想我可以使用tag to make sure it was not changing the field value when the
closure rendered the
从view, and I can confirm that the AJAX is indeed not changing the field value. Other than the AJAX, the only thing different about my problem fields is that I do not have a
个标签中保存attribute in their corresponding
创建{{1}}(我在此问题中最初发布的代码可以看到) 。我知道解决方案很简单......我在这里缺少什么?
答案 0 :(得分:0)
有问题的两个字段被链接到其他字段并填充 通过AJAX进入Load控制器的闭包。
HM。对象是否保存在两者之间?它读起来好像是
save
控制器,因为缺少字段而无法保存save
视图和println
字段(可供控制器使用)load
控制器,该控制器尝试从尚未保存的对象中检索两个字段。没有与save
控制器的中间请求数据的连接。如果不是这个问题,我猜你必须发布更多代码才能分析你的问题。
HM。刚刚看了你的另一个问题。我认为Ajax load
控制器无法获取数据,因为save
控制器没有将数据持久保存到数据库中。
为什么不直接通过save
视图输出这些值?
答案 1 :(得分:0)
最后通过淘汰过程弄明白了,但现在我看到解决方案应该非常明显。
我需要做的就是将from
属性添加到受影响的<g:select>
代码中,如下所示:
<g:select from="${loadInstance?.cargoDestination}" name="cargoDestination.id" optionKey="id" value="${loadInstance?.cargoDestination?.id}" />
现在完全符合预期。