Primefaces动作不会在数据网格中触发



我有以下的Primefaces 3.5页面,我在其中定义了两个命令link。我的问题是,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>

当你想在后台bean中调用一个方法时,使用actionListener而不是action

另外,确保你的p:commandLink被放置在h:form(我假设你已经在这里提交了它,因为它应该是你的p:datatable的父)

相关内容

  • 没有找到相关文章

最新更新