Primefaces Datatable RowSelect Événement

J'ai la suite dans ma xhtml

                <h:form id="clientTableForm" prependId="false">
                    <p:dataTable id="clientTable" widgetVar="clientTableVar"
                        var="client" value="#{resendEmailController.lazyDataModel}"
                        paginator="true" rows="15"
                        paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink}  {PageLinks} {NextPageLink} {LastPageLink} {CurrentPageReport}"
                        rowsPerPageTemplate="5,10,15,20,25,50,75,100"
                        paginatorPosition="bottom" pageLinks="5" lazy="true"
                        sortBy="#{client.cclnCode}" sortOrder="ascending"
                        selection="#{resendEmailController.selectedClient}"
                        selectionMode="single" filterDelay="500" scrollable="true"
                        scrollHeight="380">

                        <p:ajax event="rowSelect"
                            listener="#{resendEmailController.changeClient}"
                            update="_accountTableForm_accountTable" />



                        <p:column id="cclnCodeColumn" headerText="Client Code"
                            style="width:25%;" sortBy="#{client.cclnCode}"
                            filterBy="#{client.cclnCode}" filterMaxLength="10">
                            <h:outputText value="#{client.cclnCode}"
                                converter="#{trimStringConverter}" />
                        </p:column>

                        <p:column id="cclnNamenColumn" headerText="Client Name"
                            style="width:75%" sortBy="#{client.cclnName}"
                            filterBy="#{client.cclnName}" filterMaxLength="50">
                            <h:outputText value="#{client.cclnName}"
                                converter="#{trimStringConverter}" />
                        </p:column>
                    </p:dataTable>
                </h:form>
            </p:layoutUnit>

<script type="text/javascript">

        $(document).ready(function()
        {
            autoSelectClient();
        });


        function autoSelectClient()
        {
            if (clientTableVar.isEmpty() == false)
            {
                clientTableVar.selectRow(1, false);
            }
        }

        </script>

Et j'ai ceci dans mon backing bean

    public void changeClient(SelectEvent selectEvent)
{
    ResendEmailClient client = (ResendEmailClient) selectEvent.getObject();

    selectedClient = client;

    String cclnCode = client.getCclnCode();

    selectedAccounts = getService().listAccounts(cclnCode);
}

Je voudrais juste demander pourquoi le "selectedClient" variable dans le backing bean est NULLE lorsqu'il est exécuté par le "autoSelectClient();". Mais si j'ai cliqué sur les lignes "selectedClient" est déjà défini.

Comme vous pouvez le voir dans mon backing bean je peux obtenir de la valeur que je veux par l'obtention de l'objet à l'intérieur de la SelectEvent mais je veux juste savoir quelle est la cause de la différence.

Également, si possible, peut également suggérer la façon de reproduire le émuler le deuxième scénario, de sorte que le "selectedClient" est déjà mis en avant le "changeClient()" est appelée.

À l'aide de
JSF 2.1
PrimeFaces 3.5
Mojarra 2.1

OriginalL'auteur Jefrey Valencia | 2013-05-29