Primefaces数据表格的行选择事件

6
我在xhtml中有以下内容:

我在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>

我在我的后备bean中有这个

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

    selectedClient = client;

    String cclnCode = client.getCclnCode();

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

我想问一下,为什么在执行"autoSelectClient()"时,后端bean中的"selectedClient"变量是NULL,但如果我点击行,"selectedClient"已经设置了。
如您在后端bean中所见,我可以通过获取SelectEvent内部的对象来获取所需的值,但我只想知道差异的原因。
此外,如果可能的话,是否有人还可以建议如何复制模拟第二种情况,以便在调用"changeClient()"之前就已经设置了"selectedClient"。
使用JSF 2.1、PrimeFaces 3.5和Mojarra 2.1。
1个回答

12

尝试在您的Ajax选择事件处理过程中发送数据表ID,方法如下:

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

因为当您调用事件时,您选择的真实情况没有发送。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接