2017-11-02 1 views
1

Ich verwende eine JSP: Include-Tag auf jeder Ansicht, um mein Menü anzuzeigen. Gestern habe ich herausgefunden, dass Sie eine Controller-Methode verwenden können, die sehr ordentlich ist, weil sie mir erlaubt, etwas zu verarbeiten, bevor Sie das Menü zurückgeben. Was ich tue, ist, ich bin, diese zu jeder Seite:jsp: Include zeigt auf Controller-Methode funktioniert nicht auf Controller-Rückgabe

<jsp:include page="/menu/showMenu"/> 

Früher habe ich zu tun, nur dies:

<%@ include file="menu.jsp" %> 

Diese Änderung ermöglicht es mir, Boolesche Werte an das Modell zu übergeben, wenn das Menü zurückgegeben, die ich verwende, um bestimmte Optionen anzuzeigen oder nicht anzuzeigen, je nachdem, auf was der Benutzer Zugriff hat. Dies funktioniert perfekt beim ersten Laden einer Seite, aber das Menü verschwindet vollständig, wenn irgendeine Art von Controller-Verarbeitung durchgeführt wird. Zum Beispiel habe ich eine Protokollseite mit einer Tabelle, die Protokolleinträge von der Datenbank zeigt. Die Spaltenüberschriften enthalten Suchfelder, die Teil eines Formulars sind, das beim Übermitteln eine Controller-Methode aufruft, um die Protokollliste zu filtern und die gefilterten Daten anzuzeigen. Die return-Anweisung von dieser Controller-Methode ist einfach:

return "logs"; 

Die perfekt funktioniert, wenn das Original mit einschließen, dass Punkte auf die tatsächlichen JSP-Datei anstelle der Controller-Methode, aber mit dem neuen Ansatz einschließlich einer Controller-Methode des Menü verschwindet wenn die Filterlogik die Seite zurückgibt. Was ich immer tun kann, ist, die JSP-Datei wie gewohnt einzufügen und die Serviceaufrufe direkt in die JSP einzufügen, um zu prüfen, ob der Benutzer auf jede Funktion zugreifen kann. Aber ich bevorzuge die Idee, dass ein Controller dies tut und boolesche Werte übergibt an die JSP.

Irgendeine Idee, warum ich dieses Verhalten sehe? Ich kann bei Bedarf Codebeispiele bereitstellen.

Danke!

+0

Ich bemerkte ein Muster, wo das Menü zeigt, wenn von einer GET-Anfrage zurück, aber nicht zeigt, wenn von einer POST-Anfrage zurück, wenn das hilft. Alle GET-Methoden geben eine Seite mit dem angezeigten Menü zurück. – Martin

+0

Ich habe es herausgefunden! Ich musste meinem Menü-Controller eine POST-Methode hinzufügen. Es tut genau dasselbe wie die GET-Methode, aber es ist notwendig, wenn es in einer Seite enthalten ist, die von der POST-Methode eines anderen Controllers zurückgegeben wird. Hofft, das kann jemandem helfen! – Martin

+0

unter der Annahme, dass es sich nicht um eine doppelte Frage handelt, können Sie sich selbst eine Antwort geben, da Sie die Antwort auf Ihre eigene Frage herausgefunden haben. – Lexi

Antwort

0

Ich habe es herausgefunden! Ich musste meinem Menü-Controller eine POST-Methode hinzufügen. Es tut genau dasselbe wie die GET-Methode, aber es ist notwendig, wenn es in einer Seite enthalten ist, die von der POST-Methode eines anderen Controllers zurückgegeben wird. Hofft, das kann jemandem helfen!