2016-07-03 9 views
0

Ich konvertiere eine Grails 2.4.4 App auf 3.1.8. In einigen meiner Controller Methoden manchmal (basierend auf was im Service-Aufruf passiert) Ich werde nur eine Nachricht im Flash und nichts anderes, das war in 2.4.4, würde der Bildschirm würde mit dem Flash neu gerendert werden Nachricht aber in 3.1.8 wird überhaupt nichts gerendert, der Bildschirm völlig leer. Scheinbar, wenn ich eine Aussage nach der Einstellung der Nachricht im Flash hinzufügen der Bildschirm gerendert wird, kann die Aussage alles sein, z. println 'hallo' oder return oder new ModelAndView(). Beispiel unten:Grails 3.1.8 Controller

def index() { 
def res = myService.whatever() 
if (res) { 
    [res: res] 
} 
else { 
    flash.message = message(code: 'no.res') // if we get here nothing is rendered 
} 
} 

Ist dies eine Änderung grails 3 oder bin ich etwas irgendwo fehlt?

Dank

Antwort

0

Versuchen Sie, diese dann in der index.gsp Ansicht

<g:if test="${res}"> 
    <!-- cool thing goes here --> 
</g:if> 
<g:else> 
    <g:message code="no.res"/> 
</g:else> 
+0

Vielen Dank für diese

def index() { def res = myService.whatever() [res: res] } 

tun, ich bin aber nicht einen Teil des Bildschirms fehlt, dann ist es die ganze Seite, die leer ist, und wenn ich das oben implementieren würde, müsste ich um 100 Gsps ändern. Es ist merkwürdig, dass wenn es anfänglich auf z.B. Index Der Bildschirm wird zwar gerendert, aber danach, wenn eine Taste gedrückt wird und der Bildschirm neu gerendert wird, wenn nichts zurückgegeben wird, wird nichts gerendert. Bis jetzt bin ich durch meine Controller gegangen und habe ein [:] gesetzt, um die Dinge in Gang zu bringen. –

+0

Ich verstehe. Ich würde ungefähr 100 Gsps wechseln müssen - ich war in der gleichen Situation. Aber manchmal ist das die bessere Option. Natürlich hängt es ganz von Ihrem Fall ab – user615274

Verwandte Themen