Ich versuche, mitForm in Grails 2.2.4 zu verwenden Ich habe UseToken = 'True' zu einem Formular in einer vorhandenen Gsp-Datei hinzugefügt.WithForm nicht übergeben Modelldaten zu gsp mit Grails 2.2.4
Wenn ich jedoch die zugeordnete Controller-Methode mit einem withForm {...} .invalidToken {response.status = 405} umbrechen, erhalte ich interne Serverfehler, da die Generierung von gsp fehlschlägt, da keines der Attribute aus dem Modell empfangen wird .
Um dies zu zeigen, habe ich den echten Rendercode durch einige einfache Anweisungen ersetzt, die die Werte für die übergebenen Modellattribute ausgeben.
Wenn ich nicht den withForm-Wrapper verwenden, dann funktioniert alles gut. Sobald aber die withForm um den Inhalt gewickelt ist, kommt die Modellinformation nicht mehr durch.
Irgendwelche Ideen, was ich falsch mache? Soll das Modell unterhalb der withForm-Syntax platziert werden?
Steuercode:
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 Code:
<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" />
Die Druckergebnisse ohne withForm: browse.gsp Werte: InnoCentive null null
Die gedruckten Resultate mit withForm: browse.gsp Werte: null null null
Beachten Sie, dass das Original den Wert 'unschuldig' enthielt und jetzt als null angezeigt wird.
Ja, das Problem war das Missverhältnis zwischen der Form und der Methode. Ich hatte zufällig ein Formular ausgewählt, um mein erstes Update durchzuführen. Leider verhält sich der von mir ausgewählte ungewöhnlich und die Methode verarbeitet mit oder ohne Formulardaten. Da es funktionierte, kam mir nicht in den Sinn, dass es ein Problem wäre. Als ich ein Standardformular, das den Konventionen folgte, aktualisiert hatte, funktionierte die withForm gut. Danke für diese klare Erklärung! –