3

仕事を通じてサイトのプロパティを更新しています。ジョブは正常に実行され、適切に機能し、プロパティを更新します。適切に更新し、失敗することはありません。

しかし、サイトを保存すると、ページが台無しになり、ページが消えてしまいます。@.@ 何が私を夢中にさせているのでしょう! =(

すべてのページを (ワークサイトのセットアップとサイト エディターを介して) 戻すと、すべてが機能するようになるため、ジョブは正しく実行されていると確信しています。ここでは、プロパティを更新する方法を示します (プロパティ編集方法の両方のオプションを既に試しました。

@Override
public void updateStringProperty(Site site, String name, String value) {
    try {
        // ResourcePropertiesEdit rpe = site.getPropertiesEdit();
        // rpe.addProperty(name, value);

        ResourceProperties rp = site.getProperties();
        rp.addProperty(name, value);

        siteService.save(site);
    } catch (IdUnusedException e) {
        e.printStackTrace();
    } catch (PermissionException e) {
        e.printStackTrace();
    }
}

これはプロキシ層に書かれており、そこで私のアプリケーションは Sakai インターフェイスと通信して Sakai データベースにデータを読み書きします (サイトのインスタンスが上から来るのを見ることができます)。変更を適用するサイトのリストを取得する方法です (また、酒井プロキシ層):

@Override
public List<Site> getReadInWebSites(Long course) {
    Map<String, String> m = new HashMap<String, String>();
    m.put(Property.COURSE.getName(), Long.toString(course));
    m.put(Property.COURSEFINISHED.getName(), Boolean.toString(false));

    return new ArrayList<Site>(siteService.getSites(SelectionType.ANY,
            null, null, m, SortType.CREATED_BY_ASC, null));
}

前もって感謝します!

編集:新しい情報、サイトにアクセスしようとすると(ワークサイトのセットアップで構造を再構築する前に、ログに次の警告が表示されます:

org.sakaiproject.portal.charon.site.DefaultSiteViewImpl - Failed to set canAddSite for current user. Defaulting to false ...

4

1 に答える 1

1

これは、Sakai Sites がロードされたgetSitesときに遅延オブジェクトであり、すべてのメンバー変数がロードされていないためです。これは理想とはほど遠いものであり、SiteService は実際には、これを行うときに例外をスローするか、必要なデータをロードする必要があります。

ただし、サイトを変更するときに機能させるには、変更を加える前にサイトを完全にロードしてください。

Site site = siteService.getSite(site.getId());
ResourceProperties rp = site.getProperties();
rp.addProperty(name, value);
siteService.save(site);
于 2016-05-16T11:09:53.333 に答える