0

我有一个 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>

当我单击布尔按钮“提交”时,该值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;
    }
4

1 回答 1

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> 

我希望这对你有帮助

于 2012-08-02T14:37:17.943 回答