菜单直接跳到编辑页面

点击左侧菜单怎么实现直接展示实体的编辑界面,场景是我的实体确定只会有一条数据,因此想点击菜单后直接展示这条数据的编辑界面,且在编辑界面修改属性后,也能保存到这条数据中?如果初始化时没有数据,则编辑界面修改属性后新增一条数据,后面再次操作就在该数据上进行修改

你在 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 方法代码贴一下?

image
在没有数据时 我没有新建实体类,有实体类时要加上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 的这个实体。

好的,多谢提供帮助