Alfresco工作流程活动:如何在下拉列表中填充Web服务结果

时间:2016-09-23 05:21:01

标签: java alfresco alfresco-share

我正在使用Alfresco Community Edition-5.1.x,我们创建了高级工作流程。在工作流程中,我们尝试在下拉列表中填充Web服务结果值。您能否指导我们如何在下拉列表中填充值?

2 个答案:

答案 0 :(得分:1)

在此示例代码中,我通过调用Alfresco Repo webscript将组成员加载到下拉控件中。

在此处注册控件(在ftl文件中)

<label for="${fieldHtmlId}">${field.label?html}:<#if field.mandatory><span class="mandatory-indicator">${msg("form.required.fields.marker")}</span></#if></label>
<select name="${field.name}" id="${fieldHtmlId}" value="${field.value?html}" style="width: 250px;"></select>

从REST服务接收数据后的回调方法

  <script type="text/javascript">
     function ${grpName}_loadDropDown(o){          
        var selectElem = YAHOO.util.Dom.get("${fieldHtmlId}");
        selectElem.options.length=0;           
        for (; i<o.json.data.length; i++){           
            var user = o.json.data[i];                
            selectElem.options[j] = new Option(user.displayName, user.shortName, false, false);  
            j++;
        }            
     }

在此处调用REST服务

     function ${grpName}_loadData(){
        var url = Alfresco.constants.PROXY_URI+"api/groups/${grpName}/children?sortBy=displayName&maxItems=100&skipCount=0";             
        <#if field.control.params.sortAsc?exists> 
           <#assign sort=field.control.params.sortAsc?html>
           url+="&sortAsc=${sort}";
        </#if>
        Alfresco.util.Ajax.request({
        url: url,
          method: "GET",                 
           requestContentType: "application/json",    
            successCallback:{
           fn: function(o){
              ${grpName}_loadDropDown(o);              
           },
              scope: this                       
          },
          failureCallback:{
           fn: function(o){alert("Unable to find group or error ");},
           scope: this
          }               
      }); 
     }

在此处启动REST服务请求

    ${grpName}_loadData();

  </script>

答案 1 :(得分:1)

以下是您的示例,我有以下打开的JSON - RSET Web服务 获取数据。

WebService网址:https://jsonplaceholder.typicode.com/posts

结果应与下面的enter image description here

类似

如果您需要进一步的帮助,请告诉我。

<script type="text/javascript">
function ${groupName}_populateSelectData(o){
            var selectElem = YAHOO.util.Dom.get("${fieldHtmlId}");
            selectElem.options.length=0;
             var i = 0;
            var j = i+1;
            
            for (; i<o.json.length; i++){
                selectElem.options[j] = new Option(o.json[i].title, o.json[i].title, false, false);  
                j++;                   
            }
            
        }

function ${groupName}_updateList(){
            var url = "https://jsonplaceholder.typicode.com/posts";   
             
            Alfresco.util.Ajax.request({
            url: url,
              method: "GET",    
             
               requestContentType: "application/json",    
              successCallback:{
               fn: function(o){
                  ${groupName}_populateSelectData(o);              
               },
                  scope: this                       
              },
              failureCallback:{
               fn: function(o){alert("Error ");},
               scope: this
              }               
          }); 
         }
      
      ${groupName}_updateList();
 </script>