2017-01-06 3 views
0

Ich versuche, den Wert eines SelectOneMenu programmgesteuert festzulegen, aber der Wert wird nicht festgelegt.jsf selectonemenu dynamisch setvalue

versucht, die Lösung viel gesucht, aber keine befriedigende Antwort finden konnte:

Hier ist der Code. So erstellen Sie die SelectOneMenu:

SelectOneMenu yesNoDropdown = new SelectOneMenu(); 
List<SelectItem> items = new ArrayList<SelectItem>(); 
items.add(new SelectItem("", "")); 
items.add(new SelectItem("yes", "Yes")); 
items.add(new SelectItem("no", "No")); 

UISelectItems selectOptions = new UISelectItems(); 
selectOptions.setValue(items); 

yesNoDropdown.getChildren().add(selectOptions); 
yesNoDropdown.setId("yes-no"); 
yesNoDropdown.setRequired(true); 

Und ich versuche, den Wert mit diesem Code zu setzen:

FacesContext context = FacesContext.getCurrentInstance(); 
UIViewRoot rootView = context.getViewRoot(); 
SelectOneMenu yesNoDropdown = (SelectOneMenu) rootView.findComponent("formId:yes-no"); 
yesNoDropdown.setValue("no"); 
RequestContext.getCurrentInstance().update("formId"); 

nicht sicher, was falsch ist. Jede Hilfe wird geschätzt.

+0

Verwenden Sie einfach XHTML anstelle von Java. Es ist eine natürlichere Sprache, den Komponentenbaum anzugeben. – BalusC

+0

Ich habe es jetzt gerade gelöst: done this: yesNoDropdown.setSubmittedValue ("no"); – GSS

+0

Danke @BalusC für Ihren Vorschlag. Ich hätte dies in xhtml getan (das ist einfacher und hübscher), aber meine Anforderung erlaubt mir das nicht. – GSS

Antwort

0

Ich löste es gerade jetzt: tat dies:

yesNoDropdown.setSubmittedValue("no"); 

Dank!

Verwandte Themen