JSF - Radiowerte aus xhtml an Bean übergeben

Explo

Mitglied
Hallo zusammen,

wir stehen in unserem JSF Projekt vor folgendem Problem:
Der User soll/kann auf einer xhtml Seite zu diversen Fragen Radiobuttons anklicken (Werte 1-6).

Wir haben bisher gelernt, wie man pro Textfeld den Wert an die Bean(Javaklasse) übergeben kann. Nun macht es ja aber wenig Sinn für jeden Button eine Variable zu übergeben, daher stocken wir hier.

Beispielübergabe für ein Textfeld (aus xhtml an die Klasse loginbrowse):
Java:
<h:inputText label="matrikelNr" maxlength="8"
value="#{loginBrowse.matrikelNr}"/>
Damit kann ich in der loginbrowse dann mit der "MatrikelNr" weiter arbeiten.

Die Radiobuttons sehen derzeit so aus:
Java:
<td class="center"><input name="radF29" value="6" type="radio" /></td>
<td class="center"><input name="radF29" value="5" type="radio" /></td>

Meine Zielvorstellung ist, dass ich dann in meiner Javaklasse mit dem Wert für radF29 weiterarbeiten kann (der dann je nachdem, was angeklickt ist, 6 o 5 wäre)

Leider kommen wir auch mit Google nicht wirklich weiter. Wäre das keine xhtml, könnte man ja eine while oder for schleife nutzen / aber wie macht man das bei xhtml <> Javaklasse ?
Hat da jemand eine Idee oder einen kleinen Anstupser, wie wir weitermachen könnten?

Vielen Dank schonmal im Vorraus für eure Mühe(n)! 🙂

LG
Explo
 
Hallo truesoul,

vielen Dank für den bzw. die Tipps! 🙂

Wir haben uns für die selectOneRadio entschieden, allerdings hängen wir da ein bisschen beim Verständnis, wie der Wert in der Bean ankommt.
Wir haben dafür "gelernt" in der Bean eine Set/ und Getter Methode anzulegen. In dem Beispiel wird das aber nicht gemacht. (bezugnehmend auf die
"favColor1")

Machen wir das so:
xhtml
Java:
<h:selectOneRadio value="#{frageBrowse.radiotest}">
      <f:selectItem itemValue="Red" itemLabel="Color1 - Red" />
      <f:selectItem itemValue="Green" itemLabel="Color1 - Green" />
      <f:selectItem itemValue="Blue" itemLabel="Color1 - Blue" />
</h:selectOneRadio>
Bean
Java:
    private String radiotest ="vorher";
    public String getradiotest() { return radiotest; }
    public void setradiotest( String s ) { radiotest = s; }
    
        System.out.println(radiotest);

Dann gibt er gar nichts aus (radiotest ist also "") -nehmen wir die get- und set Methode raus, bekommen wir die Fehlermeldung
Property 'radiotest' not found on type pkgProject.FrageBrowse
 
Die Fehlermeldung müsste bei dem gezeigten Code auch kommen, wenn die get/set-Methoden enthalten sind. Die Methodennamen entsprechen nicht den JavaBeans-Namenskonventionen. Nach diesen müssten die Signaturen der Methoden String getRadiotest() und void setRadiotest(String) lauten.

Abgesehen davon: wo soll denn das System.out aufgerufen werden? Das hängt da irgendwie in der Gegend rum.

Poste doch mal eine JSF-Seite zusammen mit einer Bean, so dass wir ein Minimalbeispiel haben, in dem das Probelm auftritt.
 
Hallo mihe7,

die Großschreibung der Methoden fiel uns dann kurz danach auch auf - haben wir schon geändert. Eine Fehlermeldung kommt nicht, es passiert nur nichts.
Das println wird durch eine Methode aufgerufen, war vllt. etwas undurchsichtig das einfach so mit reinzupacken.

Aber beim Code zusammensschnippeln habe ich den Fehler selbst gefunden -.-
Der Button um die Methode zu starten (welche einfach nur das println macht) war komplett oben drüber in eigenem eigenen body/form
Java:
<h:body><h:form>
<h:commandButton value="fragebrowsecheck" actionListener="#{frageBrowse.check}" style="font-size: 130%;"/> 
</h:form></h:body>

Die Radiobuttons haben dann ein eigenes Form bekommen. Kurz mal zusammen gepackt und tada, geht es

Hach ja .. Vielen Dank nochmal an euch Zwei! 🙂
 

Neue Themen


Zurück
Oben