JSF Array als Input-Value

  • Themenstarter Themenstarter JSF-Anfänger
  • Beginndatum Beginndatum
J

JSF-Anfänger

Gast
Hallo,
wenn man bei einem Input-Element eine value angibt, wird ja die dem entsprechenden getter und setter aufgerufen.

Beispiel:
HTML:
<h:selectBooleanCheckbox value="#{dieBean.montag}" id="mo" />
<h:selectBooleanCheckbox value="#{dieBean.dienstag}" id="di" />
...

Java:
class DieBean
{
	private boolean[] wochentage;

	public dieBean()
	{
		wochentage = new boolean[]{false, false, false, false, false, false, false};
	}

	public void setMontag(boolean aktiv)
	{
		wochentage[0] = aktiv;
	}

	public booelan getMontag()
	{
		return wochentage[0];
	}

	public void setDienstag(boolean aktiv)
	{
		wochentage[1] = aktiv;
	}

	public booelan getDienstag()
	{
		return wochentage[1];
	}

	...
}

Auch wenn ich ein vereinfachtes Beispiel hier dargestellt habt sieht man denke ich das, auf das ich raus will.

Es gibt hier in dem Beispiel für alle 7 Wochentage Setter und Getter die eigentlich komplett das gleiche machen - sie setzen nur einen Wert (ob ein bestimmter Tag aktiv ist) in einem Array.
Schöner wäre es doch, wenn ich alle Wochentage mit einem Setter und einem Getter abfertigen kann und einfach beim Setter und Getter einen weiteren Parameter zwischen 0 und 6 mitgeben könnte.

Habe es nun mal so probiert:
HTML:
<h:selectBooleanCheckbox value="#{dieBean.wochentag[0]}" id="mo" />
<h:selectBooleanCheckbox value="#{dieBean.wochentag[1]}" id="di" />
...
Java:
class DieBean
{
	private boolean[] wochentage;

	public dieBean()
	{
		wochentage = new boolean[]{false, false, false, false, false, false, false};
	}

	public void setWochentag(boolean[] aktiv)
	{
		wochentage = aktiv;
	}

	public booelan getWochentag()
	{
		return wochentage;
	}
}


Das get-Wochentag funktioniert, da er das Array zurück bekommt und dann darauf normal mit dem Index zugreifen kann.
Das set-Wochentag funktioniert nicht (irgend wie auch logisch, da die jsf Seite ja kein array hat sondern nur den Wert).

Wie kann ich mein vorhaben so umsetzen, dass es geht?

Danke
 
Hab grad gesehen, dass ich im unteren Java-Code der Bean einen Fehler habe.

Der getter sieht natürlich so aus:
Java:
public booelan[] getWochentag()
{
    return wochentage;
}
 
Ich sehe jetzt nicht, wie man das schön lösen könnte. Schön ist alleine das Array schon nicht.

Mach Dir lieber ein fachliches Objekt, das alle Informationen beinhaltet.

Java:
public class Weekday {
    private boolean monday;
    private boolean tuesday;
    ....

    getter/setter...
}

Das hältst Du als Du einfach als eigenes Objekt in Deiner Bean.
 
Danke für die Antwort.

In einem Array halten will ich es schon.
Da es zur Verarbeitung später in einer for-Schleife einfach zu durchlaufen ist.

Aber ich entnehme aus deiner Antwort:
Ich muss mir für jedes Feld einzelne Setter und Getter schreiben. Mit einem zusätzlichen Index / Parameter geht es nicht.

danke
 
Ja, das musst Du. Jedenfalls fällt mir gerade keine bessere Lösung ein.

Ich würde ein Array aber nicht empfehlen. Lieber ein solches Object und wenn Du ein Array benötigst, bekommt es halt eine toArray() Methode.
 
Danke für deine Meinung.

Ich hätte dem Array ein Kommentar spendiert, in dem steht "0=Montag...6=Sonntag"
 

Neue Themen


Zurück
Oben