jsf booleanCheckbox aktualisieren

andkul

Bekanntes Mitglied
Hallo,

ich hab folgendes Problem:

Ich versuche gerade folgendes umzusetze: (x steht für eine selectBooleanCheckbox)

Geschlecht x
x männlich
x weiblich

wenn die Checkbox bei Geschlecht angehakt ist, dann sollen die anderen beiden Checkboxes aktiv (also disabled="false") werden, ansonsten sollen die beiden Checkboxes inaktiv sein.

Ich hab das selbe bereits mit inputText-Fields gemacht, also z. B.

Alter x
von x bis x

das funktioniert einwandfrei.


Geht das mit ice:selectBooleanCheckbox nicht? Oder mach ich was falsch? hier mal ein Beispielcode
EDIT: ich verwende icefaces 1.8.2 und der Titel müsste natürlich ice selectBooleanCheckbox heißen

Java:
<ice:panelGroup>
		<ice:outputText value="Geschlecht" style="font-weight:bold" />
		<ice:selectBooleanCheckbox value="#{myBean.activeFlag}" 
			partialSubmit="true"/>
		<br />
		<ice:selectBooleanCheckbox 
			value="#{myBean.activeFlag}" 
id="weiblich"
			disabled="#{myBean.activeFlag eq 'false'}" />
		<ice:outputLabel 
			value="weiblich" 
			for="weiblich" />
		<br />	
		<ice:selectBooleanCheckbox 
			value="#{myBean.activeFlag}" 
			id="maennlich" 
			disabled="#{myBean.activeFlag eq 'false'}" />
		<ice:outputLabel 
			value="maennlich" 
			for="maennlich" />
	</ice:panelGroup>

Danke schon mal für eure Antworten
 
Zuletzt bearbeitet:

Luke_

Mitglied
Java:
<ice:panelGroup>
        <ice:outputText value="Geschlecht" style="font-weight:bold" />
        <ice:selectBooleanCheckbox value="#{myBean.activeFlag}" 
            partialSubmit="true"/>
        <br />
        <ice:selectBooleanCheckbox 
            value="#{myBean.female}" 
id="weiblich"
            disabled="#{!myBean.activeFlag}" />
        <ice:outputLabel 
            value="weiblich" 
            for="weiblich" />
        <br />  
        <ice:selectBooleanCheckbox 
            value="#{myBean.male}" 
            id="maennlich" 
            disabled="#{!myBean.activeFlag}" />
        <ice:outputLabel 
            value="maennlich" 
            for="maennlich" />
    </ice:panelGroup>

darfst natürlich nicht das activeFlag als value für die zwei checkboxen nehmen. und
Code:
eq 'false'
kannste auch einfach durch die negation durch ! erreichen
 

andkul

Bekanntes Mitglied
danke erstmal für deine Antwort...
Du hast natürlich recht, leider hab ich nur den JSF-Code falsch gepostet.
Das activeFlag in Zeile 3 ist NICHT das gleiche wie in Zeile 7 und 15.
Folgendermaßen muss es heißen:

[Java]
<ice:panelGroup>
<ice:eek:utputText value="Geschlecht" style="font-weight:bold" />
<ice:selectBooleanCheckbox value="#{myBean.geschlecht.activeFlag}"
partialSubmit="true"/>
<br />
<ice:selectBooleanCheckbox
value="#{myBean.geschlecht.auspraegung[0].activeFlag}"
id="weiblich"
disabled="#{!myBean.geschlecht.activeFlag}" />
<ice:eek:utputLabel
value="weiblich"
for="weiblich" />
<br />
<ice:selectBooleanCheckbox
value="#{myBean.geschlecht.auspraegung[1].activeFlag}"
id="maennlich"
disabled="#{!myBean.geschlecht.activeFlag}" />
<ice:eek:utputLabel
value="maennlich"
for="maennlich" />
</ice:panelGroup>
[/Java]

Ich habe mittlerweile festgestellt, dass bei Klick auf die Checkbox bei Geschlecht die anderen 2 Checkboxes tatsächlich sofort klickbar/nicht klickbar werden, ABER: der Style ändert sich nicht sofort mit?!
D. h. wenn ich den Haken bei Geschlecht setze, dann kann ich zwar sofort auch einen Haken bei männlich/weiblich machen, aber es sieht immer noch ausgegraut aus, als ob sie immer noch inaktiv wären?!

Danke
 

Luke_

Mitglied
das war ja schon nen mittlerer krampf dahinter zu kommen...
das das hat nämlich nichts damit zutun, dass die checkboxen disabled sind, sondern hat den einfachen grund, dass es nur so aussieht wie ein inaktives feld... das kommt daher, dass du bei "Geschlecht" ein
Code:
<ice:outputText>
hast und bei "maennlich"/"weiblich" ein
Code:
<ice:outputLabel>
:toll:

warum nimmst du eig keine radiobuttons? die wären doch in diesem fall sinnvoller, weil man ja nicht männlich und weiblich anklicken sollte.
 

andkul

Bekanntes Mitglied
Hi Luke,
erstmal vielen Dank für deine Antwort.
Leider funktioniert es mit einem outputLabel statt outputText auch nicht.
ABER ich hab noch was rausgefunden.
Im Firefox funktioniert es nicht, dafür geht´s aber im Internet Explorer 8?! Ich bin jetzt mittlerweile echt ratlos.

Hab dafür noch eine andere Frage:
Wenn die Checkbox Geschlecht NICHT angehakt ist, dann sollen die Checkboxes männllich/weiblich beide anghakt und ausgegraut sein. Also hab ich folgendes versucht:
[Java]
<ice:selectBooleanCheckbox
value="#{!alg_mvc.staticFilter.geschlecht.activeFlag ? 'true' : alg_mvc.staticFilter.geschlecht.auspraegung[0].activeFlag}"
id="weiblich_#{alg_mvc.staticFilter.geschlecht.auspraegung[0].id}"
disabled="#{alg_mvc.staticFilter.geschlecht.activeFlag eq 'false'}" />
[/Java]

Jetzt bekomme ich aber das hier:
[severity=(ERROR 2), ... Illegal Syntax for Set Operation]
heißt das jetzt, dass ich beim value-Attribut so ne if then else Abfrage nicht verwenden darf?
 

Luke_

Mitglied
also bei mir geht das auch im firefox... du hast jetzt also das outputLabel von maennlich und weiblich in ein outputText geändert? denn der text im outputLabel ist dunkelgrau und im outputText ist er schwarz. zumindest solange du die styles nicht angepasst hast.

wie das mit der abfrage aussieht weiß ich nicht genau, das könntest du aber auch in ner methode von der bean regeln.

was willst du denn eigentlich genau machen? und warum nimmst du keine radiobuttons?? und warum sollen die beiden checkboxen angehalt sein, wenn sie eh disabled sind?
 

andkul

Bekanntes Mitglied
komisch, dass das bei dir funktioniert und bei mir nicht.

- ich habs bereits mit outputText und mit outputLabel versucht, ohne Ergebnis
- ich mach es nicht mit Radiobuttons, weil unsere Fachabteilung sich das halt so ausgedacht hat, aber ansonsten würd ich dir auf jeden Fall recht geben
- warum die Abfrage beim value-Attribut hier nicht funktioniert liegt offenbar daran, dass das value-Attribut schreibend ist, das geht aber nur bei lesend (hab ich mittlerweile rausgefunden)
- und die Abfrage mach nicht in einer Bean-Methode, weil das hieße, dass ich in der ManagedBean die ganze Logik (oder zumindest einen großen Teil) des darunterliegenden Datenmodells quasi nachprogrammieren müsste.

najut, vielen Dank für deine Bemühungen.
Für heute hab ich keinen Bock mehr und morgen fällt mir schon irgendwas ein
 

Ähnliche Java Themen

Neue Themen


Oben