下拉列表未在 JSF 中填充

Dropdown list is not populating in JSF

我正在研究 Managedbean 和 JSF。如下所示,我的 ManagedBean 包含 JSF 获取值所需的所有要求。我已经初始化了我的下拉列表如下。在 selectOneMenu 中,我选择了国家/地区作为字符串,它将存储下拉列表选择的值,下拉列表将显示我在 Beans 中声明的列表。 不幸的是,事情并没有发生。每次下拉菜单呈现时都会给我一个空值。我花了几天时间研究它,但无法找出确切的解决方案。我清理了我的服务器,构建了工作区并更改了服务器,但没有任何效果。

** ManagedBean_list **

private List<String> listCountry;   
    private String country;
        public void tada(){
        listCountry=Arrays.asList("India", "pakisatan","America");
    }   
    public List<String> getListCountry() {
        return listCountry;
    }
    public void setListCountry(List<String> listCountry) {
        this.listCountry = listCountry;
    }
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }

JSF

<p:selectOneMenu id="country" value="#{loginBeans.country}">
<f:selectItems value="#{loginBeans.listCountry}"  />
</p:selectOneMenu>

感谢您的帮助。 Empty dropdown list image enter image description here

将您的 listCountry 转换为

    private Map<String, String> listCountry = new HashMap<>();
    listCountry.put("India", "India");
    listCountry.put("Pakistan", "Pakistan");
    listCountry.put("America", "America");

private List<SelectItem> listCountry = new ArrayList<>();
listCountry.add(new SelectItem("India", "India"));
listCountry.add(new SelectItem("Pakistan", "Pakistan"));
listCountry.add(new SelectItem("America","America"));

您使用的是哪个 bean 注释?你说“Managedbeans”,但你发布的源代码没有显示整个 bean,是吗?检查以确保您没有将旧式 JSF 托管 bean 注释与 CDI 注释混合使用。

问题是在初始化时,列表没有被调用。我通过在托管 bean class 的构造函数中包含列表函数来解决它。这样当构造函数启动时。它还会生成下拉列表。