# jsf booleanCheckbox aktualisieren



## andkul (4. Mai 2011)

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


```
<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


----------



## Luke_ (5. Mai 2011)

```
<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 
	
	
	
	





```
eq 'false'
```
 kannste auch einfach durch die negation durch ! erreichen


----------



## andkul (5. Mai 2011)

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]
<iceanelGroup>
        <iceutputText 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}" />
        <iceutputLabel 
            value="weiblich" 
            for="weiblich" />
        <br />  
        <ice:selectBooleanCheckbox 
            value="#{myBean.geschlecht.auspraegung[1].activeFlag}" 
            id="maennlich" 
            disabled="#{!myBean.geschlecht.activeFlag}" />
        <iceutputLabel 
            value="maennlich" 
            for="maennlich" />
    </iceanelGroup>
[/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_ (5. Mai 2011)

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 
	
	
	
	





```
<ice:outputText>
```
 hast und bei "maennlich"/"weiblich" ein 
	
	
	
	





```
<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 (5. Mai 2011)

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_ (5. Mai 2011)

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 (5. Mai 2011)

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


----------

