2017-10-13 11 views
0

添付ファイルを保存しようとしています。添付ファイルは保存されますが、VFpageを開くと次のエラーが表示されます。REQUIRED_FIELD_MISSING、必須フィールドがありません:[親]:[親]

挿入に失敗しました。行0の最初の例外。最初のエラー:REQUIRED_FIELD_MISSING、必須フィールドがありません:[親]:[親]

これには2つのVFPageがあります。 1つはPDFとしてレンダリングされたVFPageで、もう1つは添付ファイルの保存とPDFとしてレンダリングされたVFPageの読み込みの参考にすぎません。誰もがこのエラーを修正する方法のアイデアを持っていますか?

これは、ここで参照

ためVFPageあるApexクラスです。

public class attachPDFDocument{ 

public String parentId{get;set;} 
public String curPage = ApexPages.currentPage().getParameters().get('id'); 

public String vrsn = 'AttachmentV'; 
public Integer vrsion; 

public String attName {get;set;} 
public String attNames {get;set;} 
public String attNameSubString; 
public String attNameSubStrings; 
public Integer attCount; 
public Integer attachCount; 

public attachPDFDocument(ApexPages.StandardController controller) {  

} 

public PageReference pdfLoad(){ 
     List<Attachment> pdfAttach = new List <Attachment>(); 
     PageReference pdf = Page.PDFAttachment; 

     List<Attachment> att = [SELECT Id, Name FROM Attachment where ParentId = :curPage Order by Name DESC]; //getting all attachments 

     //String attachName = att.Name; 


     if(att.size() <= 0){    
      vrsion = 1; 
     }else if(att.size() <= 9){ 

      Attachment attachmentPDF = att[0]; 
      attName = attachmentPDF.Name; // yung latest Version 
      attNameSubString = attName.subString(35,36); 
      vrsion = Integer.valueOf(attNameSubString) + 1;  
     }else if(att.size() > 9){         

      List<Attachment> attachPDFDoc = [SELECT Id, Name FROM Attachment where ParentId = :curPage AND Name LIKE '___________' ORDER BY Name DESC LIMIT 1]; //getting all attachments with length is 41     
      Attachment docpdf= attachPDFDoc[0]; 
      String pdfdoc = docpdf.Name;     
      attNameSubString = pdfdoc.subString(35,37);    
      vrsion = Integer.valueOf(attNameSubString) + 1; 
     }else if(att.size() > 99){         

      List<Attachment> attachPDFDoc = [SELECT Id, Name FROM Attachment where ParentId = :curPage AND Name LIKE '___________' ORDER BY Name DESC LIMIT 1]; //getting all attachments with length is 41     
      Attachment docpdf= attachPDFDoc[0]; 
      String pdfdoc = docpdf.Name;     
      attNameSubString = pdfdoc.subString(35,38);    
      vrsion = Integer.valueOf(attNameSubString) + 1; 
     } 

     Attachment attach = new Attachment(); 
     Blob body; 

     try { 
      body= pdf.getContent();    
     } catch (VisualforceException e) { 
      body= Blob.valueOf(e.getMessage()); 
     } 

     attach.Body = body ;   
     attach.IsPrivate = false;   
     attach.ContentType = '/application/pdf'; 
     attach.ParentId = ApexPages.currentPage().getParameters().get('id'); 
     attach.Name = vrsn + vrsion + '.pdf'; 

     insert attach; 
     return pdf;   
    } 

} 

答えて

0

あなたは、この行ApexPages.currentPageを()デバッグがgetParameters()( 'ID')を取得します。それが実際のIDを返していることを確認しますか? attach.parentidがnullでないことを確認してください。

関連する問題