Спасибо всем, просмотрев все приятные опции, я наконец выбрал путь для событийной шины, определенный martijn. То, что я сделал, я создал полезную нагрузку события и подключил панели для разговора. Мне также нужно было передать выбранный идентификатор / сущность на приемную панель.
Есть ли способ установить модель составного свойства приемной панели в соответствии с моделью элемента дерева, чтобы мне не нужно было делать модель вручную?
Пока мне это нравилось:
public class TreeNodeClickUpdate {
private final AjaxRequestTarget target;
private final long selectedId;
/**
* Constructor
*
* @param target
* @param selectedId
*/
public TreeNodeClickUpdate(AjaxRequestTarget target, long selectedId)
{
this.target = target;
this.selectedId = selectedId;
}
/** @return ajax request target */
public AjaxRequestTarget getTarget()
{
return target;
}
public long getSelectedId() {
return selectedId;
}
}
На стороне отправителя я сделал так:
send(getPage(), Broadcast.BREADTH,
new TreeNodeClickUpdate(target, unitObject.getId()));
И на приемном конце я получил это так:
@Override
public void onEvent(IEvent<?> event) {
super.onEvent(event);
if (event.getPayload() instanceof TreeNodeClickUpdate)
{
TreeNodeClickUpdate update = (TreeNodeClickUpdate)event.getPayload();
setSelectedId(update.getSelectedId()); //sets to id field of panel
update.getTarget().add(this);
}
}
и в качестве примера на моей приемной панели, чтобы получить значение, я создал метку, подобную этой:
label = new Label("label",new PropertyModel<BiaHomePanel>(this,"selectedId"));
Позже, на самом деле, я хочу получить информацию от сущности и показать ее в форме. Есть ли хороший способ передать модели в лучшую сторону, или я должен передать в качестве параметра в полезной нагрузки события.