【问题标题】:Alfresco 4.2.c rest api: create site giving errorAlfresco 4.2.c rest api:创建站点给出错误
【发布时间】:2014-06-17 03:13:47
【问题描述】:

我正在尝试使用 alfresco 4.2.c rest api /alfresco/wcservice/api/sites (PUT) 创建一个站点 我使用的是管理员用户,所以权限没有问题。 我能够使用 alfresco 共享 UI 成功创建站点

String objectToPost = "{\"shortName\":\"firm007\", \"title\":\"firm007\", \"description\":\"firm007\", \"visibility\":\"PRIVATE\", \"isPublic\":\"false\", \"sitePreset\":\"site-dashboard\"}";
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        HttpEntity<String> entity = new HttpEntity<String>(objectToPost,headers);

        String url = PRE_URL + "/alfresco/wcservice/api/sites"+"?alf_ticket="+ TICKET;
        String response = restTemplate.exchange(url,HttpMethod.POST, entity, String.class, new Object[] {}).toString();
        System.out.println("Created SITE response is =" + response);    

我在客户端代码上收到 500 Internal Server Error 在露天服务器上,我正在跟踪堆栈跟踪。

请您帮忙解决这个问题。 我想通过远程 REST api 调用创建一个露天网站

2014-06-17 08:39:38,232 错误 [freemarker.runtime] [http-apr-8080-exec-4] 模板处理错误:“表达式 site.shortName 在 org/ 第 9 行第 56 列未定义/ alfresco/repository/site/site.lib.ftl。”

表达式 site.shortName 在 org/alfresco/repository/site/site.lib.ftl 的第 9 行第 56 列未定义。

有问题的指令:

==> ${url.serviceContext + "/api/sites/" + site.shortName} 转义 ${jsonUtils.encodeJSONString(url.serviceContext + "/api/sites/" + site.shortName)} [on org/alfresco/repository/site/site.lib.ftl 中的第 9 行第 17 列] 在用户指令站点JSONManagers [在 org/alfresco/repository/site/site.lib.ftl 中的第 2 行,第 1 列]

在用户指令 siteLib.siteJSON [on 2 line, column 1 in org/alfresco/repository/site/sites.post.json.ftl]

面向程序员的 Java 回溯:

freemarker.core.InvalidReferenceException:表达式 site.shortName 在 org/alfresco/repository/site/site.lib.ftl 的第 9 行第 56 列未定义。

原因:freemarker.core.InvalidReferenceException:表达式 site.shortName 在 org/alfresco/repository/site/site.lib.ftl 的第 9 行第 56 列未定义。 在 freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125) 在 freemarker.core.Expression.getStringValue(Expression.java:118) 在 freemarker.core.AddConcatExpression._getAsTemplateModel(AddConcatExpression.java:98) 在 freemarker.core.Expression.getAsTemplateModel(Expression.java:89) 在 freemarker.core.ListLiteral.getModelList(ListLiteral.java:119) 在 freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:91) 在 freemarker.core.Expression.getAsTemplateModel(Expression.java:89) 在 freemarker.core.Expression.getStringValue(Expression.java:93)

【问题讨论】:

    标签: rest alfresco


    【解决方案1】:

    解决了这个小谜题。

    我没有将内容类型添加为“application/json”,因此请求会发出错误的树并转到 ftl 而不是 json

    以下代码可以在露天创建网站。

        headers.set("Content-Type", "application/json");
    
            String objectToPost = "{\"shortName\":\"firm008\", \"title\":\"firm008\", \"description\":\"firm008\", \"visibility\":\"PRIVATE\", \"isPublic\":\"false\", \"sitePreset\":\"site-dashboard\"}";
        System.out.println(objectToPost);
    
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        **headers.set("Content-Type", "application/json");**
    
        HttpEntity<String> entity = new HttpEntity<String>(objectToPost,headers);
    
        String url = PRE_URL + "/alfresco/wcservice/api/sites"+"?alf_ticket="+ TICKET;
        String response = restTemplate.exchange(url,HttpMethod.POST, entity, String.class, new Object[] {}).toString();
        System.out.println("Created SITE response is =" + response);        
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      相关资源
      最近更新 更多