JSF重复不显示复选框中的值

时间:2011-11-21 18:53:42

标签: java jsf

我将一个由对象+布尔值组成的散列图传递到我的视图中,我想显示每个对象的布尔值,并且当前有以下代码:

<ui:repeat var="item" value="#{userTypeController.permissionItems}">
                    <h:outputText value="#{item}" />
                    <h:selectBooleanCheckbox value="#{userTypeController.checkMap[item]}"/>
    </ui:repeat>

和Hashmap方法:

    public Map<Permission, Boolean> getCheckMap() {
    checkMap = null;
    for (Permission p : getPermissionItems()) {
        if (getPermissionItemsUserType().contains(p))
            checkMap.put(p, Boolean.TRUE);
        else
            checkMap.put(p, Boolean.FALSE);
        System.out.println(checkMap.get(p).toString());
    }
    return checkMap;
}

这应该有效,在system.out.println期间,我看到了一个真正的输出......

然而,复选框本身从未被检查过...对我在这里做错了什么的想法?

1 个答案:

答案 0 :(得分:0)

您描述的症状符合Mojarra bug 1807,这是2.1.1中的巧合,并在2.1.4中正式确定。所以,upgrading Mojarra应至少达到2.1.1。

请注意,您的代码中存在重大错误。你没有实例化checkmap,它会抛出一个NullPointerException,虽然这似乎过于简化了问题的代码。此外,在吸气剂内执行此操作是一个坏主意。它应该在(post)构造或事件监听器方法期间完成。在渲染响应期间,可以多次调用getter。另请参阅Why JSF calls getters multiple times