【发布时间】:2017-11-07 20:29:57
【问题描述】:
我正在尝试在 Grails 2.2.4 中使用 withForm 我已将 useToken='true' 添加到现有 gsp 文件的表单中。
但是,当我使用 withForm { ... }.invalidToken{ response.status = 405} 包装关联的控制器方法时,我收到内部服务器错误,因为 gsp 生成失败,因为没有收到来自模型的任何属性。
为了展示这一点,我用一些简单的语句替换了真实的渲染代码,这些语句打印出传入模型属性的值。
如果我不使用 withForm 包装器,那么一切正常。但是一旦 withForm 被包裹在内容中,模型信息就不再通过了。
任何想法我做错了什么?模型应该放在 withForm 语法下面吗?
控制器代码:
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”,现在它以 null 的形式出现。
【问题讨论】:
标签: grails