我得到以下代码:
<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>
有截图:
显然,当我点击十字架时,应该通过{messagesManagedBean.deleteMessage(message.msgId)}方法删除该消息。 问题是,第一次,message == null。 当我第二次点击十字架时,根本没有调用deleteMessage方法! 第三次,一切都很好,我得到了正确的消息对象。
如何提前“初始化”消息变量?