0

[ドキュメント] タブのフォルダーにアップロードされた Word ドキュメントへのリンクをカスタム VF ページに表示しようとしています。

何らかの理由で、これは期待どおりに機能しません。リンクがドキュメントを指していません。セキュリティも問題ありません。私は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 に答える