primefaces数据表变量未正确初始化

时间:2015-02-05 20:29:33

标签: jsf primefaces datatable panel commandlink

我得到以下代码:

<p:dataTable var="message"
                id="messages"
                emptyMessage="No messages"
            paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} 
                {CurrentPageReport} {NextPageLink} {LastPageLink}"
                value="#{messagesManagedBean.dataModel}" 
            paginator="true" 
            rowsPerPageTemplate="10,20,30" 
            rows="10"
            lazy="true">
            <p:column width="30%"
                      sortBy="#{message.msgTime}" 
                      filterBy="#{message.text}" 
                      >
                <p:panel id="messageid" 
                     header="#{message.sender.nickname}:#{message.msgTime}"
                     style="color: ;text-align: left; background-color: #{message.sender.userId eq messagesManagedBean.currentUser.userId ? '#B7FFFF' : '#C5FFD4'}">
                     <f:facet name="actions">
                        <p:commandLink
                            styleClass="ui-panel-titlebar-icon ui-corner-all 
                            ui-state-default ui-icon ui-icon-close"
                            action="#{messagesManagedBean.deleteMessage(message.msgId)}"
                            update=":table">
                        </p:commandLink>
                    </f:facet>
                    <p:graphicImage value="#{message.sender.avatarUrl}" width="100" height="100"/>
                    <h:outputText value="#{message.text}" />
                </p:panel>
            </p:column>
    </p:dataTable>

有截图: enter image description here

显然,当我点击十字架时,应该通过{messagesManagedBean.deleteMessage(message.msgId)}方法删除该消息。 问题是,第一次,message == null。 当我第二次点击十字架时,根本没有调用deleteMessage方法! 第三次,一切都很好,我得到了正确的消息对象。

如何提前“初始化”消息变量?

0 个答案:

没有答案