Ich verwende JDeveloper 11.1.2.4 mit JSF 1.2 und habe Probleme mit den selectOneChoice-Komponenten, die von JSF selectItems aufgefüllt werden. Anfänglich ging es um die selectOneChoice-Komponenten in Popups. Wenn Sie auf das Dropdown-Menü selbst klicken, erhält es zwar den Fokus, aber die Liste wird nicht gefüllt, wenn Sie nicht irgendwo auf der Seite außerhalb der Komponente geklickt haben. Ich habe das behoben, indem ich von einem ADF selectOneChoice zu einem JSF selectOneMenu wechselte und das reparierte.SelectOneChoice füllt den Wert selectItems nicht
Dieses Problem hier, ich habe eine selectOneChoice, die nicht in einem Popup ist, sondern auf einer JSPX-Seite, die einen ValueChangeListener darauf hat. Alles, was anfänglich getan wurde, war eine Long-Variable für den newValue (der in Long umgewandelt wird) und dann die Methode, die die Liste füllt.
Ich habe eine if-Anweisung mit einem Null-Check hinzugefügt, dann ein verschachteltes if-else, das Werte zum Deaktivieren/Aktivieren von Schaltflächen überprüft. Was nun passiert, ist, dass ich auf das Drop-down-Menü klicke, einen Wert auswähle und alles korrekt ausgefüllt/ausgelöst wird. Wenn ich versuche, auf das Dropdown-Menü zu klicken, um etwas anderes auszuwählen, passiert nichts. Es hebt nur hervor und ich sehe den gleichen Wert, bis ich wegklicke und es dann nochmal versuche und es funktioniert.
Was fehlt mir? Warum muss ich außerhalb der Komponente klicken, damit sie ausgelöst wird?
public void templateValueChangeListener(ValueChangeEvent valueChangeEvent) {
myTemplateId = (Long)valueChangeEvent.getNewValue();
if(myTemplateId != null){
if (myTemplateId == 7){
adminButton.setDisabled(true);
notAdminButton.setDisabled(false);
setIsAdminRole(true);
} else if (myTemplateId != 7){
adminButton.setDisabled(false);
notAdminButton.setDisabled(true);
setIsAdminRole(false);
}
}
fillTemplates();
fillAvailablePositions();
}
protected void fillTemplates()
{
List<ContainerTO> list = bigSession.getTheTemplates();
templateList = new ArrayList<SelectItem>();
for(ContainerTO tem : list)
templateList.add(new SelectItem(tem.getId(), tem.getValue()));
}
und hier ist der JSPX Code
<af:selectOneChoice label="Templates:" value="#{AdminBean.myTemplateId}"
valueChangeListener="#{AdminBean.templateValueChangeListener}"
id="soc1"
autoSubmit="true" binding="#{AdminBean.roleTemplateDropDown}"
partialTriggers="cb11 cb10"
immediate="true">
<f:selectItems value="#{AdminBean.templateList}" id="si1"/>
</af:selectOneChoice>
Dank
ich versuchte, aber es hat die gleiche Sache. Was passiert, wenn ich irgendwo anders auf der Seite klicke? Es lädt wirklich erst nach der ersten Auswahl, wenn ich etwas anderes anklicke. Wird die Bean wieder initialisiert oder ein Bereich? Es passiert nicht, wenn ich das SelectOneMenu mit den SelectItems verwende. Sie sind beide JSF 1.2. Die SelectOneChoice ist ADFs RichSelectOneChoice ... es erkennt die ADF-Komponente gleich, aber ich muss klicken, um die JSF selectItems erneut aufzurufen. – EatSleepLearnRepeat