0

When I preview my VF Page it renders blank (nothing is in the preview). What is wrong with my code? Or am I just testing it wrong?

Things of note:

  1. It's using an invocable method and returning a list to be iterated over in the VF Page with apex: repeat.
  2. It's using a custom controller with the logic as an extension and using the standardController for the custom object as the main controller.

Here is the code for the VF Page:

<apex:page standardController="Intake__c" renderAs="pdf" showHeader="false" sidebar="false" standardStylesheets="false" applyBodyTag="false" applyHtmlTag="false" extensions="PackingListQueryController" >
 <apex:repeat value="{!FilteredIntakes}" var="oneItem">
    <html>
    <head>
        <style>
            @page {
                size: letter;
                margin: 25mm;
                @top-center {
                    content: "{!oneItem.name }";
                }
                @bottom-center {
                    content: "Page " counter(page) " of " counter(pages);
                }
            }
            .page-break {
                display:block;
                page-break-after:always;
            }
            body {
                font-family: Arial Unicode MS;
            }
        </style>
    </head>
    <body>
        <apex:pageBlock title="Intake Details">
        <apex:pageBlockSection >
        <table width="100%" border="1" cellspacing="0" cellpadding="5" class="print-friendly">
                        <tr>
                            <th>Parent Name</th>
                            <th>Household</th>
                            <th>Delivery Type</th>
                            <th>Delivery Date</th>
                            <th>Delivery Time</th>
                            <th>Intake Status</th>
                        </tr>
                        <tr>
                            <th>{!oneItem.Parent_Name__c }</th>
                             <td class="tableContent">{!oneItem.Household__c }</td>
                             <td class="tableContent">{!oneItem.Priority__c }</td>
                             <td class="tableContent">{!oneItem.Delivery_Date__c }</td>
                             <td class="tableContent">{!oneItem.Delivery_Time__c }</td>
                             <td class="tableContent">{!oneItem.Intake_Status__c }</td>
                       </tr>
            </table>
    </apex:pageBlockSection>
    </apex:pageBlock>
    <apex:pageBlock title="Intake Details">
    <apex:pageBlockSection >
        <apex:outputField value="{!oneItem.Parent_Name__c }"/>
        <apex:outputField value="{!oneItem.Household__c }"/>
        <apex:outputField value="{!oneItem.Priority__c }"/>
        <apex:outputField value="{!oneItem.Delivery_Date__c }"/>
        <apex:outputField value="{!oneItem.Delivery_Time__c }"/>
        <apex:outputField value="{!oneItem.Intake_Status__c }"/>
    </apex:pageBlockSection>
    </apex:pageBlock>
    <apex:pageBlock title="Baby Wipes and Formula">
    <apex:pageBlockTable value="{!oneItem}" var="Baby Wipes and Formula">
       <apex:column value="{!oneItem.Baby_Wipes_Num__c}"/>
       <apex:column value="{!oneItem.Baby_Formula_Num__c}"/>
       <apex:column value="{!oneItem.Formula_Type__c}"/>
    </apex:pageBlockTable>
    </apex:pageBlock>
    <apex:pageBlock title="Diaper Boxes">
    <apex:pageBlockTable value="{!oneItem}" var="Diaper Boxes">
       <apex:column value="{!oneItem.Diaper_Boxes_Newborn__c}"/>
       <apex:column value="{!oneItem.Diaper_Boxes_Size_1__c}"/>
       <apex:column value="{!oneItem.Diaper_Boxes_Size_2__c}"/>
       <apex:column value="{!oneItem.Diaper_Boxes_Size_3__c}"/>
       <apex:column value="{!oneItem.Diaper_Boxes_Size_4__c}"/>
       <apex:column value="{!oneItem.Diaper_Boxes_Size_5__c}"/>
       <apex:column value="{!oneItem.Diaper_Boxes_Size_6__c}"/>
       <apex:column value="{!oneItem.Diaper_Boxes_Size_7__c}"/>
    </apex:pageBlockTable>
    </apex:pageBlock>
    <apex:pageBlock title="Pull Ups">
    <apex:pageBlockTable value="{!oneItem}" var="Pull-up Boxes Boys">
       <apex:column value="{!oneItem.Pull_Ups_Boys_Size_2T_3T__c}"/>
       <apex:column value="{!oneItem.Pull_Ups_Boys_Size_3T_4T__c}"/>
       <apex:column value="{!oneItem.Pull_Ups_Boys_Size_4T_5T__c}"/>
       <apex:column value="{!oneItem.Pull_Ups_Girls_Size_2T_3T__c}"/>
       <apex:column value="{!oneItem.Pull_Ups_Girls_Size_3T_4T__c}"/>
       <apex:column value="{!oneItem.Pull_Ups_Girls_Size_4T_5T__c}"/>
    </apex:pageBlockTable>
    </apex:pageBlock>
    </body>
   </html>
  </apex:repeat>
</apex:page>

Here is the code for the VF Page Controller:

public with sharing class PackingListQueryController {
    //properties used to pass data between VF page and the savepdf method 

    public ApexPages.StandardController controller;
    public Intake__c intake {get; set;}
    public static List<Intake__c> filteredIntakes {get; set;}

    public PackingListQueryController(ApexPages.StandardController controller) { 
        this.controller = controller;
        this.intake = (Intake__c) controller.getRecord();
    }

    //intake Intake_Status__c = "Approved" & Partner_Intake__c = TRUE
    @InvocableMethod(label='Get Filtered Intake Records' description='Get filtered intake records from yields of the flow, filter them again, and return the remaining records')
    public static List<Intake__c> getIntakes(List<Request> params){
        Date filterStartDate;
        Date filterEndDate;
        String filterCity;
        Integer i = 0;
        //[[{startDeliverDate: 2022-01-01, endDeliveryDate: 2022-01-10, city: null}]]
        filterStartDate = params[0].startDeliveryDate;        
        System.debug('Filtered Start Date: ' + filterStartDate);        
        filterEndDate = params[0].endDeliveryDate;
        System.debug('Filtered Info: ' + params[0]); 
        // filterStartDate = Date.newInstance(paramStartDate.year(), paramStartDate.Month(), paramStartDate.Day());
        // filterEndDate = Date.newInstance(paramEndDate.year(), paramEndDate.Month(), paramEndDate.Day());
        filterCity = params[0].city;
        if(String.isNotBlank(filterCity)){
            filteredIntakes = [SELECT Id, Name, Street_Address__c, City__c, State__c, Zip_Code__c, Priority__c, Number_of_Families_Served__c, Number_of_Children_Served__c, 
                                 New_Families__c, Diaper_Boxes_Newborn__c, Diaper_Boxes_Size_1__c, Diaper_Boxes_Size_2__c, Diaper_Boxes_Size_3__c, Diaper_Boxes_Size_4__c, 
                                 Diaper_Boxes_Size_5__c, Diaper_Boxes_Size_6__c, Diaper_Boxes_Size_7__c, Pull_Ups_Boys_Size_2T_3T__c, Pull_Ups_Boys_Size_3T_4T__c, Pull_Ups_Boys_Size_4T_5T__c,
                                 Pull_Ups_Girls_Size_2T_3T__c, Pull_Ups_Girls_Size_3T_4T__c, Pull_Ups_Girls_Size_4T_5T__c
                                 FROM Intake__c
                                 WHERE Intake_Status__c = 'Approved' AND Partner_Intake__c = TRUE
                                 AND Delivery_Date__c >= :filterStartDate AND Delivery_Date__c <= :filterEndDate
                                 AND Priority__c = :filterCity LIMIT 10];
        } else {
            filteredIntakes = [SELECT Id, Name, Street_Address__c, City__c, State__c, Zip_Code__c, Priority__c, Number_of_Families_Served__c, Number_of_Children_Served__c, 
                                New_Families__c, Diaper_Boxes_Newborn__c, Diaper_Boxes_Size_1__c, Diaper_Boxes_Size_2__c, Diaper_Boxes_Size_3__c, Diaper_Boxes_Size_4__c, 
                                Diaper_Boxes_Size_5__c, Diaper_Boxes_Size_6__c, Diaper_Boxes_Size_7__c, Pull_Ups_Boys_Size_2T_3T__c, Pull_Ups_Boys_Size_3T_4T__c, Pull_Ups_Boys_Size_4T_5T__c,
                                Pull_Ups_Girls_Size_2T_3T__c, Pull_Ups_Girls_Size_3T_4T__c, Pull_Ups_Girls_Size_4T_5T__c
                                FROM Intake__c
                                WHERE Intake_Status__c = 'Approved' AND Partner_Intake__c = TRUE
                                AND Delivery_Date__c >= :filterStartDate AND Delivery_Date__c <= :filterEndDate LIMIT 10];
        }
        for (Intake__c intake : filteredIntakes) {
            System.debug('Filtered Intake Id: ' + intake.Id);
        }
        // for (intakeList < filteredIntakes.length(); i++){
        //     System.debug('Filtered Intake Id: ' + filteredIntakes[i].Id);
        // }
        System.debug('Count Record: ' + filteredIntakes.size());
        getFilteredIntakes(filteredIntakes);
        return filteredIntakes;
    }
    public static List<Intake__c> getFilteredIntakes(List<Intake__c> intakeRecords) {
        return intakeRecords;
    }
    //Inner class to store additional params to be stored in a list 'Request'
    public class Request {
        @InvocableVariable(label='Starting Delivery Date' required='true' description='Starting Delivery Date')
        public Date startDeliveryDate;
        @InvocableVariable(label='Ending Delivery Date' required='true' description='Ending Delivery Date')
        public Date endDeliveryDate;
        @InvocableVariable(label='City' description='City')
        public String city;
    }
    public class Response {
        @InvocableVariable(label='Success' description='Successful execution of batch job' required=true)
        public Boolean success = true;
        }
}

Thank you!


Update: I tried putting the VF Page on a record, and invoking the flow to see if that made a difference and the page was still rendering blank when I added it to the record lightning page =/

1
  • 1
    You have renderAs set to pdf. Are you sure your browser isn't quietly downloading a PDF file in the background? If you're planning to embed this page on a record, remove that attribute.
    – David Reed
    Dec 28, 2022 at 1:08

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy