Hallo zusammen,
ich plage mich nun schon seit Tagen mit einem einzigen Problem und glaube langsam, dass ich verrückt werde. Ich habe da so ein JSF-Projekt, in dem jeweils nach Klick auf eine BooleanCheckbox das zugehörige InputText-Feld aktiviert werden soll. Im Detail sieht das so aus:
und die Bean dazu:
Das Problem daran ist: Wenn ich die erste checkbox anklicke, wird auch das erste inputtextfeld wie erwartet freigegeben. Wenn ich jedoch daraufhin die 2. checkbox anklicke passiert folgendes: die erste checkbox bleibt checked, die zweite ist auch checked, das erste inputtext wird aber wieder disabled und nur das zweite ist aktiv, es sollten aber beide aktiv sein.
Das ganze sieht dann so aus:
Ich bin mir ziemlich sicher, dass es nur ein blöder Fehler in der Bean sein kann, aber ich komme einfach nicht drauf (hab mit JSF auch noch nicht so viel Erfahrung). Wäre super, wenn mich da jemand auf den richtigen Pfad bringen, oder mir eine einfach Lösung für das Problem geben könnte.
Danke schonmal im Voraus...
ich plage mich nun schon seit Tagen mit einem einzigen Problem und glaube langsam, dass ich verrückt werde. Ich habe da so ein JSF-Projekt, in dem jeweils nach Klick auf eine BooleanCheckbox das zugehörige InputText-Feld aktiviert werden soll. Im Detail sieht das so aus:
Code:
...
<h:panelGrid border="0" columns="3" styleClass="text">
<h:selectBooleanCheckbox id="abc1" onclick="submit()"
valueChangeListener="#{InputText.processValueChange}" immediate="true" />
<h:inputText size="10" maxlength="15" disabled="#{InputText.abc1}" />
<h:outputText value="ABC1" />
<h:selectBooleanCheckbox id="abc2" immediate="true" onclick="submit()"
valueChangeListener="#{InputText.processValueChange}" />
<h:inputText size="10" maxlength="15" disabled="#{InputText.abc2}" />
<h:outputText value="ABC2" />
<h:selectBooleanCheckbox id="abc3" immediate="true" onclick="submit()"
valueChangeListener="#{InputText.processValueChange}" />
<h:inputText size="10" maxlength="15" disabled="#{InputText.abc3}" />
<h:outputText value="ABC3" />
<h:selectBooleanCheckbox id="abc4" immediate="true" onclick="submit()"
valueChangeListener="#{InputText.processValueChange}" />
<h:inputText size="10" maxlength="15" disabled="#{InputText.abc4}" />
<h:outputText value="ABC4" />
</h:panelGrid>
...
und die Bean dazu:
Code:
...
public final class uicomponents implements ValueChangeListener {
Boolean abc1 = true, abc2 = true, abc3 = true, abc4 = true;
//----- ValueChangeListener -----//
public void processValueChange(ValueChangeEvent e){
Boolean x = (Boolean)e.getNewValue();
String a = e.getComponent().getId();
if (a.compareToIgnoreCase("abc1") == 0){
setAbc1(!x);
}
if (a.compareToIgnoreCase("abc2") == 0){
setAbc2(!x);
}
if (a.compareToIgnoreCase("abc3") == 0){
setAbc3(!x);
}
if (a.compareToIgnoreCase("abc4") == 0){
setAbc4(!x);
}
}
//----- Getter Methods -----//
public Boolean getAbc1(){
return abc1;
}
public Boolean getAbc2(){
return abc2;
}
public Boolean getAbc3(){
return abc3;
}
public Boolean getAbc4(){
return abc4;
}
//----- Setter Methods -----//
public void setAbc1(Boolean abc1){
this.abc1 = abc1;
}
public void setAbc2(Boolean abc2){
this.abc2 = abc2;
}
public void setAbc3(Boolean abc3){
this.abc3 = abc3;
}
public void setAbc4(Boolean abc4){
this.abc4 = abc4;
}
}
Das Problem daran ist: Wenn ich die erste checkbox anklicke, wird auch das erste inputtextfeld wie erwartet freigegeben. Wenn ich jedoch daraufhin die 2. checkbox anklicke passiert folgendes: die erste checkbox bleibt checked, die zweite ist auch checked, das erste inputtext wird aber wieder disabled und nur das zweite ist aktiv, es sollten aber beide aktiv sein.
Das ganze sieht dann so aus:

Ich bin mir ziemlich sicher, dass es nur ein blöder Fehler in der Bean sein kann, aber ich komme einfach nicht drauf (hab mit JSF auch noch nicht so viel Erfahrung). Wäre super, wenn mich da jemand auf den richtigen Pfad bringen, oder mir eine einfach Lösung für das Problem geben könnte.
Danke schonmal im Voraus...