2012-03-30 7 views
1

Ich habe eine Frage bezüglich der Rückgabe von Daten in Struts2. In meiner Action-Klasse, wie unten gezeigt, erhalte ich die Datensätze und setze sie in ArrayList.Wie wird eine ArrayList-Instanz der Struts2 Action-Klasse execute-Methode zurückgegeben?

Aber könnte mir bitte jemand sagen, wie kann ich die erhaltene ArrayList auf die JSP-Seite zurückgeben? Weil wir mit der Syntax der execute-Methode action nur einen String zurückgeben können?

public class DBDisplay extends ActionSupport{ 
private String name ; 
List list = null; 

public String execute() throws Exception 
{ 
list = DBClass.getInstance().list(); 
Iterator it = list.iterator(); 
while(it.hasNext()) 
{ 
name = (String) it.next(); 
} 
setName(name); 
} 
public String getname() 
{ 
return name; 
} 
public void setName(String name) 
{ 
this.name = name; 
} 

} 

Antwort

-1

Eines der grundlegenden Design-Ziele von Struts 2 Rahmen ist MVC (Model-View-Controller) Design-Muster in die Entwicklung von Webanwendungen zu bringen. Das MVC-Muster ermöglicht die Trennung von Problemen und ermöglicht den sauberen und locker gekoppelten Code, der einfach zu warten ist. MVC-Muster besteht aus 3 verschiedenen Teilen. Modell, Ansicht und Controller. Lassen Sie uns sehen, wie diese drei Elemente in Struts 2 implementiert werden. Controller (StrutsPrepareAndExecuteFilter) - Controller ist die Komponente, die die Koordination verschiedener Anfragen übernimmt. In einer Webanwendung müssen verschiedene Benutzeranforderungen von verschiedenen Anwendungskomponenten bedient werden, und diese Entscheidung wird von der Controller-Komponente getroffen. In Struts 2 erreicht jede Anfrage an die Web-Anwendung zuerst die Front-Controller-Klasse - StrutsPrepareAndExecuteFilter. Dies überprüft die eingehenden Anforderungen und leitet die Anforderung dann an die entsprechende Klasse (in Struts als Aktionsklasse bezeichnet) weiter, die für die Verarbeitung der Anforderung konfiguriert wurde.

Modell (Aktion) - Modell ist die Komponente, die für die Ausführung der Geschäftsfunktionen der Anwendung verantwortlich ist. Es ist der Kern der Anwendung. Es stellt den Status der Anwendung dar und enthält Geschäftslogik und Geschäftsdaten. In Struts 2 fungieren Aktionsklassen als Gateway zum Modell einer Anwendung. Diese Klassen sind für die Verarbeitung jeder Benutzeranforderung zuständig und delegieren die Geschäftslogik dann an andere Klassen, die vom Anwendungsentwickler geschrieben wurden. Verschiedene Aktionsklassen für unterschiedliche Benutzeranforderungen gewährleisten, dass wir sauberen Code haben, der leicht gepflegt werden kann. Aber was ist mit der Funktionalität, die für verschiedene Benutzeranforderungen erforderlich ist (z. B. Anwendungsprotokollierung)? Für solche Querschnitte hat Struts 2 eine andere Komponente, die Interzeptoren genannt werden.

Ansicht (Ergebnis) - Die Ansicht in einer MVC-Architektur ist die Komponente, die für die Darstellung (Benutzeroberfläche) zuständig ist. Die View-Komponente verwendet die Model-Komponente, um Daten abzurufen und anzuzeigen. Struts 2 unterstützt mehrere Technologien wie JSP, Velocity-Vorlagen, FreeMarker, XSLT for View-Komponente. In der Struts 2-Terminologie ist View als Ergebnis bekannt. Die Aktionsklasse (Model) legt fest, wie das Ergebnis (View) dem Benutzer angezeigt werden soll.

Der Benutzer greift auf eine Struts 2-Anwendungsfunktionalität zu, indem er in einem Browser auf die Anwendungs-URL zugreift. Die Anfrage kommt immer zum StrutsPrepareAndExecuteFilter-Controller (Da er in der web.xml aller Struts 2-Anwendungen konfiguriert ist). StrutsPrepareAndExecuteFilter sucht nach der Action-Klasse, die in der Datei struts.xml aufgerufen werden soll. Alternativ kann es mit Konventionen erraten. Daraufhin wird die Aktionsklasse execute() -Methode aufgerufen, die wiederum die Geschäftslogikklassen aufruft. Aktionsklassen können die anzuzeigende Ansicht mithilfe von Anmerkungen angeben oder sie können in der Datei struts.xml angegeben werden. In beiden Fällen weiß Struts 2, welche View (Result) aufgerufen werden soll, um die Daten dem Benutzer anzuzeigen. Eine weitere wichtige Anmerkung ist, dass die Objekte in der Action-Klasse für die View-Komponente verfügbar sind. Daher bestimmen Aktionen nicht nur, welche Ansicht (Ergebnis) angezeigt werden soll, sondern liefern auch Daten, die von der Ansicht benötigt werden.

Der valueStack (seine Kombination aus objectStack und contextMap) OGNL wird verwendet, um die Aktion und andere Objekte zu speichern. Sie können OGNL verwenden, um auf den Objektstapel und die Kontextkarte zuzugreifen.

OGNL

Binden Sie die Elemente Objekte modal und wandelt Werte von einem Typ in einen anderen Bind generic-Tags mit modalen Objekten. Erstellen Sie Listen und Maps im laufenden Betrieb, die mit GUI-Methoden verwendet werden können. Methoden aufrufen. Sie können eine beliebige Methode aufrufen, nicht nur Getter und Setter.

+0

down voter lassen Sie mich bitte wissen, was ist das Problem hier, so dass ich entsprechende Änderungen vornehmen kann. –

+0

Ich würde annehmen, weil (a) es die Frage nicht beantwortet und (b) es eine Menge Wörter braucht, um es nicht zu beantworten. Es war purer Zufall, dass ich über ein Jahr später auf diese Frage kam, weil ich eine zufällige Verbesserung bekam. –

2

Aktionsklassen geben eine Zeichenfolge zurück, um das Ergebnis zu benennen und keine Daten zurückzugeben. Daten werden entweder über Aktionseigenschaften (z. B. name, die Sie bereits verfügbar machen) oder eine Modellinstanz (bei Implementierung von ModelDriven) verfügbar gemacht.

Zugang zum list ist die gleiche wie name – durch eine öffentliche Zugriffs zur Liste bietet:

public class DBDisplay extends ActionSupport { 
    private List list; 
    public List getList() { return list; } 
    // Rest of class elided. 
} 

Dann aus der JSP, zum Beispiel:

<s:iterator value="list"> 
    <s:property /><br/> 
</s:iterator> 

Der Iterator-Tag "value" Attribut verweist auf die Aktionseigenschaft list und ruft getList() für die Aktion auf. Das property-Tag greift auf den Wert oben auf dem Stapel zu, wenn kein "value"-Attribut angegeben wird.

Vielleicht möchten Sie etwas Zeit mit Blick auf die Struts 2 "nutshell" documentation verbringen.

Verwandte Themen