gpt4 book ai didi

grails - withForm没有使用Grails 2.2.4将模型数据传递给gsp

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

我正在尝试在Grails 2.2.4中使用withForm
我已将useToken ='true'添加到现有gsp文件上的表单中。

但是,当我用withForm {...} .invalidToken {response.status = 405}包装关联的 Controller 方法时,由于gsp生成失败,因为没有收到来自模型的任何属性,因此出现内部服务器错误。

为了说明这一点,我用一些简单的语句替换了实际的渲染代码,这些语句打印出传入的模型属性的值。

如果我不使用withForm包装器,那么一切正常。但是,一旦withForm被包装在内容周围,模型信息就不再通过。

有什么想法我做错了吗?应该将模型放置在withForm语法下面吗?

Controller 代码:

def browse () {
// withForm {
def filter = null
def challenges = []
def oimlChallenges = []
def breadCrumbs
def total
def model = SystemUtil.baseModel(request)
def Boolean enablePartnerChallenge
def currentUser = springSecurityService?.currentUser
def source = params.source ?: 'innocentive'
model += [enablePartnerChallenge: enablePartnerChallenge, max: params.max ?: 10,]
filter = ChallengeFilter.build(params, sswcEnabled())
model += [challenges: challenges,
filter: filter, total: total, sort: 'postedDate',
currentOffset: params.offset, source: source,
searchTerm: params.searchTerm,
userFilter: userFilter()]

render(view: 'browse', model: model)
// }.invalidToken{ response.status = 405}
}

gsp代码:
<body>
<g:render template="/panels/headerUX"
model="[selectedMenu: 'Challenge Center']" />
<div class="body-container">
<div class="container">
<g:form name='filterForm' action="browse" id='filterForm'
method="post" useToken="true">

browse.gsp values:
${source.toString()}
${pavilionId.toString()}
${enablePartnerChallenge}
${challengeListing.toString()}
${pavilionTitle}


<%-- <g:render template='browseTabsRefresh' model="${[source: source, pavilionId: pavilionId, enablePartnerChallenge: enablePartnerChallenge, challengeListing: challengeListing, pavilionTitle: pavilionTitle]}" />--%>
<%-- <g:render template="newFilterPanel" model="${model}" />--%>
<%-- <div id="challengeListDiv">--%>
<%-- <g:render template='challengeListRefresh'--%>
<%-- model="${[challenges:challenges, filter:filter, userFilter: userFilter, challengeListing:challengeListing]}" />--%>
<%-- </div>--%>

</g:form>
</div>
</div>

<g:render template="/panels/footerUX" />

没有withForm的打印结果:
Browse.gsp值:无意义null null

使用withForm的打印结果:
Browse.gsp值:null null null

请注意,原始文件包含值“innocentive”,现在它为空。

最佳答案

是否显示了browser.gsp的GSP代码?好像您正在访问browse方法而未实际提交表单一样。除非您提交表单,否则只有invalidToken部分将执行,并且它将随后尝试呈现browser.gsp(因为您仅更改HTTP响应代码,而不重定向或呈现文本或其他.gsp)。

要进行验证,请将invalidToken块替换为类似以下内容的代码,以便它不会尝试呈现.gsp

}.invalidToken{ 
render(status: 405, text: "Invalid Token")
}

对于真正的实现,您将需要重定向到错误页面或类似内容。

关于grails - withForm没有使用Grails 2.2.4将模型数据传递给gsp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47166897/

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