更新网站属性会使所有页面消失(Sakai 2.9.3)

时间:2016-05-16 00:57:29

标签: java sakai

我通过工作更新我的网站资产。该作业运行正常,它可以正常工作并更新我希望它正确更新并永不失败的属性。

但是,当我保存网站时,它会弄乱我的网页,使它们消失。最糟糕的是,它永远不会发生在@。@是什么让我发疯! =(

我确定这项工作正在运行,因为一旦我获得所有页面(通过工地设置和网站编辑器),事情就会全部运转。这里是我更新属性的方法(我已经尝试了属性编辑方式的两个选项:

@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数据库(你可以看到网站的实例来自上面),它是怎样的我得到了应用更改的网站列表(也是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 ...

1 个答案:

答案 0 :(得分:1)

这是因为当Sakai Sites加载getSites时,它们是惰性对象,并且不会加载所有成员变量。这远非理想,当您执行此操作或加载所需数据时,SiteService实际上应该抛出异常。

然而,在您修改网站之前,为了让它正常工作,请在进行更改之前先完全加载网站。

Site site = siteService.getSite(site.getId());
ResourceProperties rp = site.getProperties();
rp.addProperty(name, value);
siteService.save(site);