【发布时间】:2017-01-06 21:34:10
【问题描述】:
我正在尝试以编程方式设置 SelectOneMenu 的值,但未设置该值。
尝试了很多解决方案,但找不到满意的答案:
这里是代码。创建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);
我正在尝试使用此代码设置值:
FacesContext context = FacesContext.getCurrentInstance();
UIViewRoot rootView = context.getViewRoot();
SelectOneMenu yesNoDropdown = (SelectOneMenu) rootView.findComponent("formId:yes-no");
yesNoDropdown.setValue("no");
RequestContext.getCurrentInstance().update("formId");
不确定是什么问题。任何帮助将不胜感激。
【问题讨论】:
-
只需使用 XHTML 而不是 Java。指定组件树是一种更自然的语言。
-
我刚刚解决了:这样做了:yesNoDropdown.setSubmittedValue("no");
-
感谢@BalusC 的建议。我会在 xhtml 中做到这一点(这更容易也更漂亮),但我的要求不允许我这样做。
-
没有什么在 XHTML 中是不可能的,而只有在 Java 中是可能的。
-
@BalusC - 你是对的,我承认我懒得将java代码重写为xhtml。但我做到了(更简单、更清洁)。感谢您的建议。
标签: primefaces jsf-2 selectonemenu