當帶有MessagePanel的頁面首先呈現時,消息和批准鏈接將完美呈現。當我點擊Approve鏈接時,所有的業務邏輯都按照需要工作,getNextMessage()
方法返回適當的對象,但消息面板不會在瀏覽器的頁面上更新。也就是說,郵件正文標籤不會更新。更改默認模型後,爲什麼我的Wicket Panel無法重新渲染?
JPAEntityModel extends LoadableDetachableModel。
我缺少什麼?我該如何解決它?
public class MessagePanel(String id, IModel<Message> messageModel) extends Panel {
super(id, messageModel);
add(new Label("messageText", new PropertyModel<Message>(getModelObject(), Message.BODY_FIELD)));
add(new IndicatingAjaxFallbackLink<User>("approveLink", new JPAEntityModel<User> (getActiveUser())) {
@Override
public void onClick(AjaxRequestTarget target) {
Message nextMessage = getNextMessage();
MessagePanel.this.setDefaultModel(new JPAEntityModel<Message>(nextMessage));
target.add(MessagePanel.this);
}
});
setOutputMarkupId(true);
}
那麼如何讓標籤刷新,從新模型對象中提取數據呢? – Instantsoup 2011-04-11 09:14:21
改爲使用新的PropertyModel(getModel(),...)。 –
2011-04-11 09:17:10
@Martijn Dashorst這確實是理想的解決方案,但只有修改鏈接以避免調用'setDefaultModel()'。 – biziclop 2011-04-11 09:28:09