1

我创建了一个自定义的 visualforce 页面。在控制器类中,我想在下拉列表中获取所有工作区的列表,以便用户可以选择发布数据的位置

有人可以为我提供一些关于如何实现这一目标的指导。

任何帮助表示赞赏。:)

4

2 回答 2

2

您需要查询内容工作区,然后将它们放入选择选项列表中,然后可以在 visualforce 页面中引用该列表。

顶点控制器:

public Id selectedWorkspaceId { get; set; }

private List<SelectOption> workspaceOptions;
public List<SelectOption> getWorkspaceOptions() {
 if(workspaceOptions == null) {
  for(ContentWorkSpace workspace : [select id, name from ContentWorkspace]) {
   workspaceOptions.addNewSelectOption(
    new SelectOption(workspace.id, workspace.name);
   }
  }
 }
 return workspaceOptions;
}

视觉力量页面:

<apex:selectList value="{!selectedWorkspaceId}" size="1">
 <apex:selectOptions value="{!workspaceOptions}"/>
</apex:selectList>

文档:

于 2011-07-12T18:23:14.653 回答
0

下面是用于在 Salesforce CRM Content 中查询工作区列表的 Java 代码(来自代码接收)。将下面的代码翻译成顶点,它应该可以工作。

package com.sforce;

import org.apache.axis.client.Stub;

import com.sforce.soap.enterprise.*;
import com.sforce.soap.enterprise.sobject.*;

public class QueryWorkspace {

    /**
     * @param args
     */  

    public static void main(String[] args) {
        QueryWorkspace queryWorkspace = new QueryWorkspace();
        try {
            queryWorkspace.queryAvailableWorkspaces();
        } catch (Exception ex) {
            ex.printStackTrace(System.err);
        }
    }

    private void queryAvailableWorkspaces() throws Exception {

        SforceServiceLocator sforceServiceLocator
            = new SforceServiceLocator();

        SoapBindingStub binding
            = (SoapBindingStub) sforceServiceLocator.getSoap();

        // Login  

        LoginResult lr = binding.login("user@jstest.org",
                "password");

        binding._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY,
                lr.getServerUrl());

        // Create a session header for subsequent calls  

        _SessionHeader sessionHeader = new _SessionHeader();
        sessionHeader.setSessionId(lr.getSessionId());
        binding.setHeader(sforceServiceLocator.getServiceName()
                .getNamespaceURI(), "SessionHeader", 
        sessionHeader);

        QueryResult query
            = binding.query("select Id, Name from" 
            + " ContentWorkspace");

        SObject[] records = query.getRecords();
        if (records != null) {
            for (int i = 0; i < records.length; i++) {
                ContentWorkspace contentWorkspace =
                    (ContentWorkspace)records[i];
                System.out.println("Workspace Id:"
                        + contentWorkspace.getId() + " Name:"
                        + contentWorkspace.getName());
            }
        }        
    }

}
于 2011-07-05T13:25:03.273 回答