JSF Array als Input-Value

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
 
J

JSF-Anfänger

Gast
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;
}
 
S

Sym

Gast
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.
 
J

JSF-Anfänger

Gast
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
 
S

Sym

Gast
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.
 
J

JSF-Angänger

Gast
Danke für deine Meinung.

Ich hätte dem Array ein Kommentar spendiert, in dem steht "0=Montag...6=Sonntag"
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JSF (Primefaces) SelectOneMenu Value auf Array wird nicht gesetzt Web Tier 0
C Websocket Array Web Tier 2
K JSP String[] Array nach Javascript Web Tier 4
K Servlet + JSP: JSP-Seite ein Array/ArrayList überliefern vom Controller-Servlet Web Tier 8
M STRUTS2 - Array als Parameter übergeben Web Tier 2
T Array übergeben an JS oder anders ? Web Tier 2
R Array oder Listen einlesen mit JSF über javaserverpage Web Tier 2
H [WICKET] clean form input trotz AjaxSubmitLink Web Tier 6
LadyMilka java.lang.NumberFormatException: For input string: ... Web Tier 5
H <form:input > javascript Web Tier 2
M [JSF] Input-highlighting bei fehlgeschlagener Validierung Web Tier 4
J struts2 result="input" Web Tier 2
M Properties der JSP nach input-result leer (Struts 2) Web Tier 2
A JSP key=value Paare aus der URL auslesen Web Tier 3
R com.sun.faces.context.SessionMap.put(key, value) Web Tier 2
R JSF selectOneListbox speichert Value nicht. Web Tier 1
G Probleme mit Java + Tomcat | Cannot switch on a value of type String for source level below 1.7 Web Tier 8
S value auf null setzen Web Tier 3
D JSF Aufruf des Value Attributes trotz rendered = false Web Tier 2
A JSF xhtml parameter / zugriff auf value Web Tier 2
J struts2: vom value stack zum servlet Web Tier 14
S [SelectItems value(herkunft bean)] in [UI:repeat] lädt daten nicht neu nach Web Tier 3
D SmartGWT :: RichTextEditor :: Value read Web Tier 3
M Zugriff aus eigenen Tags auf Struts Value Stack Web Tier 2
E value übergabe an bean! aber wie? Web Tier 3
G JSP/JSF Inputtext rerender wenn Value geändert wird Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben