在数据网格中不触发Primefaces操作

时间:2016-09-16 08:31:48

标签: jsf primefaces

我有以下Primefaces 3.5页面,我在其中定义了两个commandLink。我的问题是lockout的操作未被触发(使用断点检查),尽管具有相同设置的lockoutTest有效。 oncomplete适用于commandLink,不会抛出任何异常。

<p:dataTable id="calendar" value="#{calendarView.calendarData.entrySet().toArray()}" var="row">
            <f:facet name="header">
                <p:panelGrid>
                    <p:row>
                        <p:column>
                            <p:commandLink id="lockoutTest"
                                           value="test lockout"
                                           update=":mainForm:lockoutEditorDialog"
                                           process="@this"
                                           action="#{calendarView.editLockout(15,15)}"
                                           oncomplete="lockoutDialogWidget.show()">
                                <f:attribute name="title" value="valami" escape="true" />
                            </p:commandLink>
                        </p:column>
                    </p:row>
                </p:panelGrid>
            </f:facet>
            <p:column style="width: 50px; text-align: right">
                <f:facet name="header">
                    <h:outputText value="#{msgs.calendar_room}" />
                </f:facet>
                <h:outputText value="#{row.key.roomNumber}" />
            </p:column>
            <p:columns value="#{calendarView.columns}" var="column" style="text-align: center; #{not empty row.value[column].color ? 'background-color:#'.concat(row.value[column].color):''}">
                <f:facet name="header">
                    <h:outputText value="#{column}" />
                </f:facet>
                <p:commandLink id="lockout"
                           value="#{row.value[column].text}"
                           update=":mainForm:lockoutEditorDialog"
                           process="@this"
                           action="#{calendarView.editLockout(row.key.roomNumber,column)}"
                           oncomplete="lockoutDialogWidget.show()"
                           rendered="#{row.value[column].text == 'K'}">
                    <f:attribute name="title" value="#{row.value[column].label}" escape="true" />
                </p:commandLink>
            </p:columns>
        </p:dataTable>

更新:

我已将p:columns更改为简单的p:column进行测试,并且可以正常运行:

        <p:column id="testcolumn">
            <p:commandLink id="lockouttest"
                           value="T"
                           update=":mainForm:lockoutEditorDialog"
                           process="@this"
                           action="#{calendarView.editLockout(15,15)}"
                           oncomplete="lockoutDialogWidget.show()"
                           >
            </p:commandLink>
        </p:column>

1 个答案:

答案 0 :(得分:-1)

如果要在辅助bean中调用方法,请使用actionListener而不是action

另外,请确保p:commandLink放在h:form内(我假设您已在此处对其进行了豁免,因为它应该是您p:datatable的父级)