0

userDamainオブジェクトのリスト内のいくつかのチェックボックスの値を更新できないjsfページがあります。実際、これは私の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 に答える