Frage

Ich bin mit einem MVC-Framework, das ein bisschen wie Streben ist. Also, ich habe einen „Edit Store“ Link in meiner Anwendung habe dies ist, wie die URL aussehen würde:

http: // localhost: 9080 / test action = editStore & storeNum = 10

Nun Aktion bestimmt meine Aktion (analog zu Struts Aktion) ausgeführt werden. Die entsprechende Aktion hier ist: EditStoreAction. Durch Klicken auf diese öffnen würde ein Pop mit verschiedenen Attributen eines Speichers für die Bearbeitung auf.

Meine Frage hier ist: Wie schreibe ich meine Handlungen? Muss ich schreiben zwei Aktionen in diesem Zusammenhang?

  1. EditStoreAction, die machen wird edit.jsp
  2. StoreSaveAction die     wird aufgerufen, wenn der Benutzer drückt     nehmen auf der gerenderte Reaktion von     edit.jsp.

oder muss ich schreiben gerade eine Aktion? EditStoreAction und legt Form auf die gleiche Aktion, ich würde wissen, dass der Benutzer die für Änderungen bei Vorlage akzeptieren Taste gedrückt hat. Also, ich würde eine andere Strömung in der Aktion ausführen, das Updates zu Datenbank speichern würde und zu einer diff Seite umleiten.

Was ist die beste pratice hier? Erstellen Sie so viele Aktionen wie möglich Coz es den Code modular hält? Oder schreiben Sie einfach eine Aktion Everthing in einer jsp zu behandeln?

Ich weiß, diese Frage ein bisschen trivial klingt, aber manchmal möchte man einfach alles richtig machen. Daher ist die Frage. Schätzen Sie Ihre Hilfe.

War es hilfreich?

Lösung

Die Idee ist, ähnlich wie Spring MVC, Ihre Aktionen auf die Methoden einer bestimmten Klasse zuzuordnen, sagen Sie es Controller.

Also, in Ihrem Fall diese beiden Aktionen werden auf zwei verschiedene Methoden der gleichen Klasse zugeordnet werden. Sie können die Klasse StoreFormController und zwei Methoden aufrufen, editStore() und saveStore().

Noch besser ist es, wenn Sie machen zwei Controller für jede Einheit. Darf man für alle GET-Anfragen und eine andere ist für POST-Anfragen. Also, es in Ihrem Fall würde zwei Controller StoreController für alle anderen Anfragen und StoreFormController für alle Formularübermittlungen, nämlich Post-Anfragen. Nun Ihre erste Aktion sein GET gehen Methode von editStore() StoreController, während das zweite Wesen POST-Request-Methode von saveStore() StoreFormController gehen wird. Sie können beliebig viele Methoden definieren, wie in einem dieser beiden Klassen basierend auf dem Anforderungstyp benötigt wird.

Sie können leicht sehen, woher ich komme, wenn Sie Spring MVC-API kennen.

Andere Tipps

Ich mag Streben Dispatch Klasse verwenden, weil ich mehr als eine Methode in der Action-Klasse (die „execute“) Methode definieren könnte. Hinter der Haube, die alle es tut, ist die Methode zu finden, die es (Vorgelegt in der Form oder in der URL übergeben) auszuführen hat, finden die Methode mithilfe von Reflektion, rufen Sie es mit der rechten Reihe von Argumenten (die Methode die gleiche haben muss Signatur der Methode „execute“), wird es ihn führt und übergibt entlang. Die Dispatch einfach überschreibt die Methode der Action-Klasse „Ausführen“, um dieses Verhalten zu implementieren.

aber sagen, dass in Ihrem Fall würde ich nur eine Klasse definieren - sagen wir mal „DispatchStoreAction“, und ich würde zwei Methoden definieren, wahrscheinlich „vorbereiten“ und „Speichern“. Ich mag es zu tun auf diese Weise, weil ich immer noch eine gute Klasse Abstraktion haben (und Sie setzen nicht die „action“ Sie in dem Klassennamen sind ausgeführt wird), weil Ihre Methoden eindeutig identifizieren können, was sie tun sollen, und auch denn per definitionem neigen Aktionsklassen klein zu sein. Sie werden wahrscheinlich ein „StoreLogic“ oder „StoreBusiness“ irgendwo definiert haben, und diese Klasse wird die Business-Logik auf die Entität, die Sie gerade arbeiten im Zusammenhang behandeln. Ich persönlich denke, dass es schön ist, wenn man eine „StoreAction“ hat und dann ein „StoreLogic“, eine „Useraction“ und einen „UserLogic“ und so weiter - das Verhältnis nicht 1 bis 1 sein muss, aber ich denke, es hilft Aufrechterhaltung der Code.

Überprüfen Sie den Quellcode der Dispatch Klasse für Ideen, wie dies zu tun, aber die Umsetzung sollte trivial sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top