点击左侧菜单怎么实现直接展示实体的编辑界面,场景是我的实体确定只会有一条数据,因此想点击菜单后直接展示这条数据的编辑界面,且在编辑界面修改属性后,也能保存到这条数据中?如果初始化时没有数据,则编辑界面修改属性后新增一条数据,后面再次操作就在该数据上进行修改
你在 menu.xml 里直接配置打开编辑界面就可以吧。只不过编辑界面需要改一下,在 onInit()
方法里,需要自己加载那条数据,并设置给数据容器。如果加载的数据为空,则新建一个,然后设置给数据容器。类似下面这样:
@Inject
private DataManager dataManager;
@Inject
private InstanceContainer<Car> carDc;
private Car car;
@Subscribe
public void onInit(final InitEvent event) {
List<Car> allCar = dataManager.load(Car.class).all().list();
if(allCar.isEmpty()) {
car = dataManager.create(Car.class);
}else {
car = allCar.get(0);
}
carDc.setItem(car);
}
我是这样做的,不过在修改属性保存后,并不会更新数据,而是会创建一条新数据。这点不知道该怎么解决
你的 init 方法代码贴一下?
在没有数据时 我没有新建实体类,有实体类时要加上mute()方法页面才会显示属性
这里有点问题,上面这种方法不行。通过主菜单打开,根据文档,使用 edit 界面时需要配置参数,否则就是你现在看到的情况,每次创建一个新实体。
<item screen="sales_Customer.edit">
<properties>
<property name="entityToEdit"
entityClass="com.company.demo.entity.Customer"
entityId="0118cfbe-b520-797e-98d6-7d54146fd586"
entityView="_local"/>
</properties>
</item>
这里的 entityId
是写死的。因此,如果你的这个实体只有一个,那么可以在应用程序启动的时候,检查数据库有没有这个实体,没有的话,新建一个,并把 id 写死。这样每次打开界面,编辑的就是固定 id 的这个实体。
好的,多谢提供帮助