在List视图中点击create或edit按钮时,如何向Detail视图传递参数?
list_create
和 list_edit
都有一个 QueryParametersProvider
:
@Install(to = "ordersDataGrid.create", subject = "queryParametersProvider")
private QueryParameters ordersDataGridCreateQueryParametersProvider() {
return QueryParameters.of("name","New name");
}
@Install(to = "ordersDataGrid.edit", subject = "queryParametersProvider")
private QueryParameters ordersDataGridEditQueryParametersProvider() {
return QueryParameters.of("name","Edited name");
}
然后,再 detail 页面的 QueryParametersChangeEvent
中可以拿到query param,
public class OrderDetailView extends StandardDetailView<Order> {
private String name;
@Subscribe
public void onQueryParametersChange(final QueryParametersChangeEvent event) {
var parameters = event.getQueryParameters().getParameters();
name = parameters.get("name").get(0);
}
@Subscribe
public void onInitEntity(final InitEntityEvent<Order> event) {
event.getEntity().setName(name);
}
@Subscribe
public void onBeforeShow(final BeforeShowEvent event) {
getEditedEntity().setName(name);
}
}
点击create按钮的时候,QueryParametersProvider没有调用
newEntitySupplier被调用了,但queryParametersProvider没有被调用
Detail视图的openMode是DIALOG
这个传递参数能传递实体类型的嘛
url中肯定不行吧,可以传实体id,在target页面再加载实体。或者做一个全局的变量缓存之类的。
好的!
DIALOG模式下,通过 newEntitySupplier确实可以传递到Detail视图,但是还有一个问题,在Detail视图中,有一个EntityPicker(选择上级单位),又要通过dialog弹出List视图,这时候怎么再把这个type参数传到弹出窗口呢?弹出窗口list要用这个参数作为loader的查询参数