Dropdown的valueChangeListener不使用primefaces数据表

时间:2011-09-06 14:34:37

标签: jsf-2 primefaces

我有数据表和xhtml中的下拉列表。如果我在这个页面中删除p:datatable代码,那么我可以调用dropdown的valueChangeListener,但是如果p:datatable存在于xhtml中,那么我就无法调用它。

Xhtml代码

<ui:define name="content">
    <f:view>
        <h:form id="accountSummaryForm" prependId="false">
            <h:selectBooleanCheckbox id="checkbox" value="true" />
            <h:outputLabel value="Show certificates preview on sumit"></h:outputLabel>
            <h:outputLabel value="Show certificates preview on sumit"></h:outputLabel>
            <h:outputText align="left"
                value="Value is #{reqSummaryHandler.certNumber}" />
            <p:dataTable id="reqActList" paginatorAlwaysVisible="true"
                var="reqInfo" value="#{reqSummaryHandler.certActListModel}"
                paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                paginator="true" rows="#{label.accountList_defaultNumberOfRows}"
                selectionMode="single"
                rowsPerPageTemplate="#{label.accountList_numberOfRows}" width="60%">
                <p:column style="text-align:center;" filterBy="" sortBy=""
                    width="5%">
                    <f:facet name="header">
                        <h:outputLabel value="#{label.certNumber}" />
                    </f:facet>
                    <h:outputText align="left" value="#{reqInfo.certNumber}" />
                </p:column>
                <p:column style="text-align:center;" filterBy="" sortBy=""
                    width="5%">
                    <f:facet name="header">
                        <h:outputLabel value="Version" />
                    </f:facet>
                    <h:outputText align="left" value="#{reqInfo.certVersionNbrString}" />
                </p:column>
                <p:column style="text-align:center;" filterBy="" sortBy=""
                    width="5%">
                    <f:facet name="header">
                        <h:outputLabel value="Insured" />
                    </f:facet>
                    <ui:repeat value="#{reqInfo.clientList}" var="insuredInfo">
                        <h:outputText align="left"
                            value="#{insuredInfo.generalPartyInfo.nameInfo.commName.commercialName}" />
                    </ui:repeat>
                </p:column>
                <p:column style="text-align:center;" filterBy="" sortBy=""
                    width="5%">
                    <f:facet name="header">
                        <h:outputLabel value="Certificate Holder" />
                    </f:facet>
                    <ui:repeat value="#{reqInfo.certificateHolderInfoList}"
                        var="certHoldInfo">
                        <h:outputText align="left"
                            value="#{certHoldInfo.additionalInterest.generalPartyInfo.nameInfo.commName.commercialName}" />
                    </ui:repeat>
                </p:column>
                <p:column style="text-align:center;" filterBy="" sortBy=""
                    width="5%">
                    <f:facet name="header">
                        <h:outputLabel value="Activity Performed" />
                    </f:facet>
                    <h:outputText align="left" value="#{reqInfo.effectiveTypeCd}" />
                </p:column>
                <p:column style="text-align:center;" filterBy="" sortBy=""
                    width="5%">
                    <f:facet name="header">
                        <h:outputLabel value="Certificate Status" />
                    </f:facet>
                    <h:outputText align="left" value="#{reqInfo.statusCd}" />
                </p:column>
                <p:column style="text-align:center;" filterBy="" sortBy=""
                    width="5%">
                    <f:facet name="header">
                        <h:outputLabel value="Third Party" />
                    </f:facet>
                    <h:outputText align="left"
                        value="#{reqInfo.certWordingEndorsementInd}" />
                </p:column>
                <p:column style="text-align:center;" filterBy="" sortBy=""
                    width="5%">
                    <f:facet name="header">
                        <h:outputLabel value="Manual Form" />
                    </f:facet>
                    <h:outputText align="left" value="#{reqInfo.manualEntryInd}" />
                </p:column>
                <p:column style="text-align:center;" filterBy="" sortBy=""
                    width="5%">
                    <f:facet name="header">
                        <h:outputLabel value="Manual Addendum" />
                    </f:facet>
                    <h:outputText align="left" value="#{reqInfo.mnlAddendumInd}" />
                </p:column>
                <p:column style="text-align:center;" filterBy="" sortBy=""
                    width="5%">
                    <f:facet name="header">
                        <h:outputLabel value="Path" />
                    </f:facet>

                    <p:cellEditor>
                        <f:facet name="output">
                            <h:outputText align="left" value="#{reqInfo.routePathCd}"
                                readonly="true" />
                        </f:facet>
                        <f:facet name="input">
                            <h:selectOneMenu value="#{reqInfo.routePathCd}">
                                <f:selectItem itemLabel="Issue  Distribute" itemValue="A" />
                                <f:selectItem itemLabel="Send to Underwriter" itemValue="B" />
                                <f:selectItem itemLabel="Issue  Do Not Distribute"
                                    itemValue="C" />
                            </h:selectOneMenu>
                        </f:facet>
                    </p:cellEditor>
                    <p:rowEditor rendered="#{reqInfo.statusCd eq 'A'}" />
                </p:column>
                <p:column style="text-align:center;white-space: normal;nowrap">
                    <f:facet name="header">
                        <h:outputLabel value="Action" />
                    </f:facet>
                    <ui:repeat value="#{reqInfo.availableFunctions.functionNameArray}"
                        var="linkInfo">
                        <p:commandLink id="View" value="#{linkInfo}" ajax="false" />
                        <br />
                    </ui:repeat>
                </p:column>
            </p:dataTable>
            <p:spacer width="50" height="0"></p:spacer>
            <p:spacer width="50" height="0"></p:spacer>
            <p:spacer width="3" height="0"></p:spacer>
            <p:spacer width="3" height="0"></p:spacer>
            <p:spacer width="3" height="0"></p:spacer>
            <p:spacer width="3" height="0"></p:spacer>
            <p:spacer width="3" height="0"></p:spacer>
            <p:spacer width="3" height="0"></p:spacer>
            <h:outputLabel value="Assign Path" style="font-weight:bold" />
            <p:spacer width="5" height="10" />
            <h:selectOneMenu id="dropdown2"
                valueChangeListener="#{reqSummaryHandler.DoPathProcessing1}"
                value="#{reqSummaryHandler.certNumber}" onchange="submit();">
                <f:selectItem itemLabel="Issue  Distribute" itemValue="A" />
                <f:selectItem itemLabel="Send to Underwriter" itemValue="B" />
                <f:selectItem itemLabel="Issue  Do Not Distribute" itemValue="C" />
            </h:selectOneMenu>
        </h:form>
    </f:view>
</ui:define>

听众代码是

    public void DoPathProcessing1(ValueChangeEvent event) {
    String newValue = (String) event.getNewValue();
    System.out.println("Path"
            + certActListModel.getRowData().getRoutePathCd());
    certActListModel.getRowData().setRoutePathCd(newValue);

    System.out.println("value is " + newValue);
}

知道为什么它不起作用吗?

我正在使用jsf-api-2.0.3和primefaces-2.2.1

1 个答案:

答案 0 :(得分:1)

您正在使用下拉组件的valuevalueChangeListener属性。你为什么要这样做?

只需让value="#{reqSummaryHandler.certNumber}在托管bean中调用setCertNumber(String certNumber)即可。为什么不把这段代码放入setter方法?