Submit eines HTML-Formulars in Vaadin

flaggschiff

Mitglied
Hallo Leute,

ich wende mich jetzt mal an das Forum, da ich mit anderen Beispielen im Web, auch die von Book of Vaadin, nicht ganz klar komm.

Ich lass mir in meinem Java-Programm, was übrigens auf Spring basiert, bestimmte Informationen aus der Datenbank holen. Anhand dieser Informationen erstelle ich bestimmte HTML-Eingabeelemente z.B. Radio-Buttons oder Checkboxen.
Zum Verständnis, die Informationen die ich bekomme, sind Fragen und Antworttypen (z.B. SingleChoice oder MultipleChoice) für einer Umfrage.
Zum Schluß erstelle ich einen Button der das Form abschicken soll, und wo ich danach die gewählten Antworten in die DB speichern kann.

Doch wie funktioniert das?
Darauf zu achten ist auch, dass die HTML-Elemente dynamisch erzeugt werden, d.h. die Anzahl der Elemente stehen vorher nie fest!

Wie würde ihr das machen? Ich hoffe ich hab es verständlich erklärt?

VIELEN VIELEN DANK!

Java:
	// Form erstellen
	Form form = new Form();
			
	// Container mit den Fragen und Antworttypen durchlaufen und anzeigen
	for(int a=0; a<surveyContainer.size(); a++) {
		
		// Frage darstellen
		label = new Label(surveyContainer.getIdByIndex(a).getQuestionContent());
		label.setSizeUndefined();
		form.getLayout().addComponent(label);
				
		// Auswahl darstellen
		if (surveyContainer.getIdByIndex(a).getAnswerType().toString() == "SingleChoice") {
			// SingleChoice
			splitAnswerValue = surveyContainer.getIdByIndex(a).getAnswerTypeValue().split(";");
			if (splitAnswerValue.length > 0) {						
				optionGroup = new OptionGroup();
				optionGroup.setMultiSelect(false);
				optionGroup.setNullSelectionAllowed(false);						
				for(int b=0; b<splitAnswerValue.length; b++) {
					optionGroup.addItem(splitAnswerValue[b]);
				}
				form.addField("sc", optionGroup);
			}		
		} else if (surveyContainer.getIdByIndex(a).getAnswerType().toString() == "MultipleChoice") {
			// MultipleChoice
			splitAnswerValue = surveyContainer.getIdByIndex(a).getAnswerTypeValue().split(";");
			if (splitAnswerValue.length > 0) {						
				optionGroup = new OptionGroup();
				optionGroup.setMultiSelect(true);
				optionGroup.setNullSelectionAllowed(true);
				for(int b=0; b<splitAnswerValue.length; b++) {
					optionGroup.addItem(splitAnswerValue[b]);
				}
				form.addField("mc", optionGroup);
			}
				
		}

		// Trennlinie
		label = new Label("<hr style=\"margin: 10px 0;\" />", Label.CONTENT_XHTML);
		form.getLayout().addComponent(label);				
    }
			
	// Buttons		
	button = new Button();
	button.setCaption("Umfrage abschließen");
	form.getLayout().addComponent(button);
 
Wie würde ich was machen? (Mit welcher Vaadin-Version?)
Klick auf den Button abfangen? => Listener
Die Ergebnisse speichern? => Wie sieht dein Datenmodell aus?
Wie ich die Werte bekommen würde? => Wie du die selektierten Werte bekommst weißt du?
 
Zuletzt bearbeitet:
Noch nie damit gearbeitet. Aber sowas
Code:
== "SingleChoice"
kann durchaus Probleme machen. Ich würde es mal mit equals("SingleChoice") probieren...
 

Zurück
Oben