简体   繁体   English

Alfresco JavaScript获取自定义DataList

[英]Alfresco javascript get custom DataList

I've created a custom datalist and put some values on it. 我创建了一个自定义数据列表,并在其中添加了一些值。 Now I try to get data values within a script that will be triggered by a rule. 现在,我尝试在将由规则触发的脚本中获取数据值。 So far, I've trouble to get the custom datalist named test with this code: 到目前为止,我很难用以下代码获取名为test的自定义数据列表:

var site = siteService.getSite(document.siteShortName);
var dataLists = site.getContainer("datalists");
var listCompany = dataLists.childByNamePath("test");

It seems that its return a null object but I can't figure it out why, I tried with 似乎它返回一个空对象,但我不知道为什么,我尝试了

"dataLists", 
"datalists" and 
"data-lists" 

but still null object... Edit: After looking int he solr log, I have an error that says that Model tracking failed NamespaceException. 但仍然为空对象... 编辑:查看完日志后,我遇到一条错误,指出模型跟踪NamespaceException失败。 Something like my model has already been defined previously 像我的模型之前已经定义过了

Second question: How can I acces to the data inside the datalist? 第二个问题:如何访问数据列表中的数据? Is getElementById() will work? getElementById()是否可以工作?

test dataList is like: test dataList就像:

'test'  
  field1: name, 
  field2: company, 
  field3:number, 
  field4: number2

I hope the below script will help you to resolve your datalist issue. 希望以下脚本可以帮助您解决数据列表问题。

var site = siteService.getSite(document.siteShortName);
var dataListsContainer = site.getContainer("datalists");
var dataLists = dataListsContainer.getChildren();

logger.log("Data List length : " + dataLists.length);
for(var x=0;x<dataLists.length;x++)
{
    var dataList = dataLists[x]; //Get the current data list        
    var props = dataList.getProperties(); //Read the data list properties
    var title = props["cm:title"]; //read the datalist's title property
    logger.log("Data List title : " + title);

    if (title.indexOf("<data_list_title_goes_here>") > -1){ //check whether it's the required data list or not

        var dataListItems = dataList.getChildren(); //get the all datalistitems
        logger.log("Total dataListItems : " + dataListItems.length +" for " + title);
        for(var y = 0;y<dataListItems.length;y++) //Iterate all the datalistitems one by one
        {
            var dataListItem = dataListItems[y];
            var dataListItemProps = dataListItem.getProperties();    //Read all the properties of the current datalistitem      
            logger.log(dataListItemProps["namespace:propertyname"]); //read your custom property here
            logger.log(dataListItemProps["namespace:propertyname"]); //read your custom property here
            logger.log(dataListItemProps["namespace:propertyname"]); //read your custom property here
        }
    }       
}

If you're using Server side javascript, getElementById() won't work and this is for client side javascript. 如果您使用的是服务器端javascript,则getElementById()将不起作用,这适用于客户端javascript。

Let me try with my custom datalist and will update you. 让我尝试使用我的自定义数据列表,并会更新您。 In mean time, can you please share, alfresco.log & solr.log file errors? 同时,您能否分享alfresco.log和solr.log文件错误?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM