Servlet GWT

NC10

Mitglied
Hallo,

ich versuche es nocheinmal, mit einer neuen, etwas konkreteren Frage, in der Hoffnung, dass mir diesmal jemand helfen kann.

Zunächst zum groben Verständnis: Ich habe mir ein TabLayoutsPanel gebaut. Jedes Tab enhält wiederum ein zusammengesetztes Widget in einer eigenen Klasse. Das Klappt soweit sehr gut.
Das erste Tab simuliert einen Art FileUpload mit Hilfe einer TextArea. In die TextArea soll man Text einfügen können, der dann serverseitig verarbeitet wird.
Zunächst kann man im ersten Tab nur einen Text eingeben, und der Server antwortet mit einem Ok und dem eingegeben Text. Soweit gut! Dazu der Code:
clientseitig:
Code:
class Upload extends Composite
{
	protected String mytextString;

	public Upload() 
    {
        VerticalPanel vpanel = new VerticalPanel();
        initWidget(vpanel);
        //panel.addStyleName("demo-Composite");
        
        final TextArea upload = new TextArea();
        upload.setCharacterWidth(80);
        upload.setVisibleLines(10);
	    HTML text = new HTML("Bitte einen Text einfügen.");
	    Button button = new Button("Submit");
	    
	    button.addClickHandler(new ClickHandler() {

			public String mytextString;

			public void onClick(ClickEvent event) {
				
				//proxy- Objekt aus dem GreetingServiceAsync erstellen, casten
				GreetingServiceAsync proxy = (GreetingServiceAsync)GWT.create(GreetingService.class);
				
				//callback- Objekt, generic 
				AsyncCallback<String> callback2 = new AsyncCallback<String>() {
					
					//die zwei Methoden sind immer enthalten
					public void onFailure(Throwable caught) {
						//nicht implementiert
					}
					public void onSuccess(String result) {
						Window.alert("Folgendes wurde hochgeladen: " +result);
		            }
				};
				//Aufruf
				proxy.textinput(upload.getValue(), callback2);
				
				mytextString = upload.getValue(); //Das war ein Versuch?!?!
			}
		});	

        vpanel.add(upload);
        vpanel.add(text);
        vpanel.add(button);
    }
}

"GreetingService.java"
Code:
public interface GreetingService extends RemoteService {
	String textinput(String input);
}

"GreetingServiceAsync.java"
Code:
public interface GreetingServiceAsync {
	void textinput(String input, AsyncCallback<String> callback2);
}

serverseitig:
Code:
public class GreetingServiceImpl extends RemoteServiceServlet implements
		GreetingService {

	public String translate(String input) {
		return input;
	}
}

In meinem nächsten Tab, also in einer anderen Klasse möchte ich genau mit diesen eben eingegebenen Text weiterarbeiten und habe versucht ihn irgendwie in einer Variable zu speichern und in der Klasse des anderen Tabs weiterzuverwenden. Dazu müsste man ja ein Objekt der Klasse erstellen damit ich diese Variable in einer anderen Klasse wiederverwenden kann. Funktioniert aber so nicht. Zur Erläuterung der Code:
Code:
public Translate() 
    {
        VerticalPanel panel = new VerticalPanel();
        initWidget(panel);
        //panel.addStyleName("demo-Composite");
        
	    HTML text = new HTML("Unix- Tool <code>tr</code> '&uuml;bersetzt' Whitespaces in Newlines und erzeugt so eine einspaltige Liste aller W&ouml;rter der .txt Datei.");
	    RadioButton rb0 = new RadioButton("","nur bei Whitespaces");
	    RadioButton rb1 = new RadioButton("","bei Whitespaces Komma Semikolon Doppelpunkt");
	    Button button = new Button("Submit"); 
	    
	    button.addClickHandler(new ClickHandler() {

			public void onClick(ClickEvent event) {
				
				//proxy- Objekt aus dem GreetingServiceAsync erstellen, casten
				GreetingServiceAsync proxy = (GreetingServiceAsync)GWT.create(GreetingService.class);
				
				//callback- Objekt, generic 
				AsyncCallback<String> callback3 = new AsyncCallback<String>() {
					
					//die zwei Methoden sind immer enthalten
					public void onFailure(Throwable caught) {
						//nicht implementiert
					}
					public void onSuccess(String result) {
						Window.alert("Hier wir dann der text 'translatet': " +result);
					}
					
				};
				//Aufruf: in mytest sollte eigentlich der Text stecken den ich den vorherigen
                                //Klasse eingegeben habe
                                //mit dieses Lösung klappt es nicht, irgendwie verständlich es wird ja ein
                                //neues Objekt erstellt?!?! 
				Upload upload = new Upload();
				String mytext = upload.mytextString;
				proxy.greet(mytext, callback3);
			}
		});	
	    
        panel.add(text);
        //headerText.addStyleName("demo-Composite-header");

        panel.add(rb0);
        panel.add(rb1);
        panel.add(button);
        //dataText.addStyleName("demo-Composite-data");
    }
}

Ich hoffe irgendwer verseht mein Vorhaben.
Wie kann ich auf den Text, den ich eigentlich an den Server "geschickt" habe, zugreifen?

Vielen vielen Dank wenn sich jemand die Mühe macht, das zu lesen/verstehen und zu helfen.

Danke
 

NC10

Mitglied
Hallo,

hab das ganze mit einer statischen getter- Methode gelöst. War gar nicht so schwer, zu wenig Übung... Das hätte bestimmt jemand von den Java- Gurus gewusst!

Code:
class Upload extends Composite {
	
	static TextArea upload = new TextArea();
	
	public static String getInput() {
    	return upload.getValue();
    }
....
 

Neue Themen


Oben