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:
"GreetingService.java"
"GreetingServiceAsync.java"
serverseitig:
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:
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
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> 'übersetzt' Whitespaces in Newlines und erzeugt so eine einspaltige Liste aller Wö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