0

我正在尝试在自定义 VF 页面上显示指向已上传到“文档”选项卡中的文件夹的 Word 文档的链接。

由于某种原因,这没有按预期工作。该链接未指向该文档。安全也不是问题。我想我在 VF 中做的不对。

这是我的控制器代码:

public with sharing class osv_portal_HomePageContoller {
public string strDocUrl;
public osv_portal_HomePageContoller()

{

    try
    {
        List<Document> lstDocument = [Select Name from Document where Name = 'SLA-Technology' limit 1];
        string strOrgId = UserInfo.getOrganizationId();
        strDocUrl = '/servlet/servlet.FileDownload?file='+lstDocument[0].Id;

    }
    catch (Exception e) 
    {
        ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Error in getDocumentLogoUrl() ' + e.getMessage()));
        System.debug('Error: ' + e.getMessage());
    }
        System.debug('The URL is ' + strDocUrl);
        ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO, 'The URL returned is ' + strDocUrl));   

    }

}

这是我的 VF 代码:

<apex:outputLink value="{!strDocUrl}" id="theLink" styleclass="slabutton">
    <span class="delete">Service Level Agreement</span>
 </apex:outputLink>

谢谢。

4

2 回答 2

2

我相信您的问题是您正在引用1stDocument[0].Id但没有拉Id入您的查询。此外,作为一项规则,您不应以数字开头变量。

尝试将上面的代码更改为:

public with sharing class osv_portal_HomePageContoller {
public string strDocUrl;
public osv_portal_HomePageContoller()

{

  try
  {
    List<Document> FirstDocument = [SELECT Id,Name FROM Document WHERE Name = 'SLA-Technology' LIMIT 1];
    string strOrgId = UserInfo.getOrganizationId();
    strDocUrl = '/servlet/servlet.FileDownload?file='+FirstDocument[0].Id;

  }
  catch (Exception e) 
  {
    ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Error in getDocumentLogoUrl() ' + e.getMessage()));
    System.debug('Error: ' + e.getMessage());
  }
    System.debug('The URL is ' + strDocUrl);
    ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO, 'The URL returned is ' + strDocUrl));   

  }
}
于 2012-09-21T16:19:16.377 回答
0

尝试改变

公共字符串 strDocUrl;

公共字符串 strDocUrl{get;set;}

于 2013-08-14T15:37:24.023 回答