gpt4 book ai didi

grails - 标签g:include没有将模型正确传递给 View

转载 作者:行者123 更新时间:2023-12-02 15:14:00 26 4
gpt4 key购买 nike

我已经为这些问题苦苦挣扎了几个小时,得出的结论是2.0.0.RC1可能是一个错误。

起初我以为这是我正在从事的项目,但是后来我创建了一个完整的新项目并能够重新创建该错误。我正在使用grails 2.0.0.RC1。

当我尝试在GSP中包含模型对象时,该错误就会出现,例如:

/hello/index.gsp

 <p>This data is coming from the model:</p>
<p>content: ${content}</p>
<g:include model="${otherModel}" view="/hello/include.gsp" />

现在,在我的操作中,我会看到以下内容:

HelloController.groovy
package helloworld

class HelloController {

def index() {

def model = [:]
model.content = 'content...'

def includeModel = [:]
includeModel.content = 'includeModel...'

model.otherModel = includeModel

render( view:'index', model:model )
}
}

/hello/include.gsp文件包含以下内容:

/hello/include.gsp
<p>This data is coming from the included model:</p>
<p>content: ${content}</p>

但是,页面上显示的不是我所期望的,这是页面上显示的:

http://localhost:8080/helloworld/hello/index
This data is coming from the model:
content: content...
This data is coming from the included model:
content: content...

有任何想法吗?任何帮助是极大的赞赏。

谢谢,
-C撒

最佳答案

这可能是一个错误,但是根据文档,include标签是专门设计用于在当前响应中包括另一个 Controller /操作或 View 的响应的,而不仅仅是其他GSP。如果要在页面中“包含”另一个GSP,则确实应该使用render标签。我已验证您的代码可与render标签一起正常工作,并将include.gsp重命名为_include.gsp并使标签成为<g:render model="${otherModel}" template="include" />。我得到以下输出:

This data is coming from the model:

content: content...

Using g:render: This data is coming from the included model:

content: includeModel...



我还尝试向 Controller 添加另一个操作,以返回包含的内容并呈现include.gsp,然后使用g:include标记在页面中输出该内容,并且可以正常工作:
def include() {
def includeModel = [:]
includeModel.content = 'includeModel...'
includeModel
}

然后在index.gsp中添加:
<g:include action="include"/>

我得到:

This data is coming from the model:

content: content...

Using g:render: This data is coming from the included model:

content: includeModel...

Using g:include with action This data is coming from the included model:

content: includeModel...



另外,如果 View 与 Controller 中的方法名称相同,则不必在 Controller 中指定render(view:'viewname,...)。您只需返回模型,Grails就会自动选择与 Controller Action 同名的GSP文件。

综上所述,您似乎仍想使用include标记进行操作,但我无法解释为什么不这样做(并且标记的源代码未显示在像它应该的文档)。我建议您提交JIRA,尽管render标签不是您的选择。

关于grails - 标签g:include没有将模型正确传递给 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8029731/

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