0

openxavaを使用して、別のエンティティの1つのセクション内にあるコレクションエンティティの詳細要素にアクセスするにはどうすればよいですか? たとえば、エンティティ A のビューにはセクション {S1,S2,S3} があり、セクション S3 ビュー内には {エンティティ B のコレクション} があります。ここで、エンティティ B の詳細要素にアクセスして、アクション コントローラーで要素を埋めることができるようにします。それ、どうやったら出来るの?

4

3 に答える 3

1

次のようにして、コレクションをビューから直接取得します。

Collection myCollection = getView().getSubview("myCollection").getCollectionObjects();

最も古い OpenXava バージョンでも動作する必要があります

于 2013-01-07T12:23:40.790 に答える
0

いくつかの方法でそれを行うことができます。ここに 1 つがあります。ベース モジュール (コレクションで動作するはずです) によって呼び出されるアクション内から変更したいいくつかの参照と共に使用しました。

Query q = XPersistence.getManager().createQuery("JPQL QUERY TO RETRIVE THE COLLECTION WITH :parameterIfNeeded");
q.setParameter("parameterIfNeeded", "value");
List entityBList = q.getResultList();
if (getView().getModelName().equalsIgnoreCase("yourBaseModelViewName")) {
    getView().getSubview("yourSubViewName").setModel(entityBList);
    getView().getSubview("yourSubViewName").refresh();
}

setModel() を使用するには、OX 4.6 を使用している必要があります。また、「yourSubViewName」は、基本モデルへのコレクションのプロパティの名前であることを覚えておいてください。

コレクションでそのコードをテストしていないので、必要に応じて調整してください。クエリ結果リストなどをキャストする必要があるかもしれません。

于 2013-01-03T20:39:00.307 に答える
0

ビューに関連付けられたエンティティを取得し、そこからコレクションを取得します。OpenXava 4.3 以降、次の方法で実行できます。

MyEntity myEntity = (MyEntity) getView().getEntity();   
Collection myCollection = myEntity.getMyCollection();

4.3 より前の OX を使用している場合は、次のようにします。

Map keyValues = getView().getKeyValuesWithValue();
if (!keyValues.isEmpty()) {
    MyEntity myEntity = (MyEntity) 
        MapFacade.findEntity(getView().getModelName(), keyValues);
    Collection myCollection = myEntity.getMyCollection();
}
于 2013-01-07T12:30:25.367 に答える