JSF - PrimeFaces,如何在列表中获取booleanCheckbox / booleanButton的值

时间:2012-08-02 00:21:42

标签: jsf java-ee primefaces

我有一个jsf页面,我无法更新userDamain个对象列表中某些复选框的值,实际上这是我的jsf页面的一部分:

    <h:outputText value="USER's rights list: "></h:outputText>
    <p:dataTable id="userss" var="userr" value="#{userMB.userListe}">

        <p:column>
            <f:facet name="header"><h:outputText value="FirstName" /></f:facet>                     
            <h:outputText value="#{userr.firstName}"  />                    
    </p:column>


    <p:column>
        <h:panelGrid columns="1" style="margin-bottom:10px" cellpadding="5">  
                <h:outputText value="Basic Usage: " />  
                <p:selectBooleanCheckbox value="#{userr.deletee}" immediate="true" actionListener="#{userr.deletee}"  />      
            </h:panelGrid> 

            <p:commandButton value="Submit" update="display" oncomplete="dlg.show()" />  
            <p:dialog header="Selected Values" modal="true" showEffect="fade" hideEffect="fade" widgetVar="dlg">  
                <h:panelGrid columns="1" id="display">  
                    <h:outputText value="Value 1: #{userr.deletee}" />  
                </h:panelGrid>  
            </p:dialog>      


    </p:column>

当我点击布尔按钮'Submit'时,userr.deletee的值总是为false(默认值)并且它无论如何都没有更新,我试图在booleanButton中使用Listner和actionListener但是它不起作用,我也尝试了postValidate事件,所以如果有人知道这一点,我会优雅。

这是我托管bean的一部分:

private List<UserDomain> userListe ;


    public List<UserDomain> getUserListe() {
        return this.userListe;
    }

    public void loadUserListe(){
        this.userListe = new ArrayList<UserDomain>();
        this.userListe.addAll(getUserServicee().getAll());
    }


    public void setUserListe(List<UserDomain> userListe) {
        this.userListe = userListe;
    }

userDomain bean的一部分:

...
public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
@Transient
    private boolean deletee;

    public boolean isDeletee() {
        return deletee;
    }

    public void setDeletee(boolean deletee) {
        this.deletee = deletee;
    }

1 个答案:

答案 0 :(得分:0)

我发现了一个对我来说似乎逻辑的解决方案,我在我的复选框中添加了一个ajax行为来执行一个方法和一个在这个方法中调用的属性来获取整个userDomain对象,所以我可以得到user.deletee值,这是我正在谈论的代码的一部分:

<h:panelGrid columns="1" style="margin-bottom:10px" cellpadding="5">  
                    <h:outputText value="Delete Right: " />  

                    <p:selectBooleanCheckbox value="#{userr.deletee}">  
                        <f:ajax execute="@this" listener="#{userMB.saveUserRights}" />
                        <f:attribute name="user" value="#{userr}" />
                    </p:selectBooleanCheckbox> 

                </h:panelGrid> 

我希望这会对你有所帮助