2

I'm using Eclipse Kepler and the Force.com IDE for Spring '15. I've created a custom component that I can't save in the IDE. This component defines a pageblocktable, which includes a column defined wiht a facet. With the column facet included, I can't save the component in Eclipse. Eclipse displays the following error:

Save error: null

When I remove (or comment out) the column facet, I can save the component in the IDE. In the Salesforce developer IDE, I can save the component with the column facet no problem. Below is the code behind my component. Is there any work-around for this other than using the Salesforce developer IDE?

<apex:component >

    <apex:attribute name="accountLocationMgr" 
        type="RFPAccountLocationMgr" 
        required="true" 
        description="Object containing account locations and search params."
         />

    <apex:attribute name="listType" 
        type="String" 
        required="true"
        description="Available or Selected" 
        />

     <apex:pageBlock id="TablePanelSelectedId" 
            rendered="{!accountLocationMgr.hasLocations}"
            title="RFP Sites (deselect to remove)">


    <apex:actionStatus id="TableUpdateStatusSelected">

        <apex:facet name="start">
                    <apex:outputPanel layout="block" styleClass="message infoM4">
                        <apex:panelGrid columns="2" styleClass="messageTable" columnClasses="messageCell" style="padding:0px;margin:0px;">
                            <apex:panelGroup >
                                <img class="loading-icon" src="/s.gif" />
                            </apex:panelGroup>
                            <apex:panelGroup >
                                <div class="messageText">Please wait...</div>
                            </apex:panelGroup>
                        </apex:panelGrid>
                    </apex:outputPanel>
                </apex:facet>

        <!-- Selected Locations table -->
                <apex:facet name="stop">

                    <apex:pageblocktable value="{!accountLocationMgr.accountLocationList}" var="record">

                        <apex:column headerValue="Selected">
                            <apex:inputCheckbox value="{!record.selected}" />
                        </apex:column>

                        <!-- Record_Number__c -->
                        <apex:column >

<!-- cannot save in Eclipse Force.com IDE with the following facet -->
                            <apex:facet name="header">

                                <apex:commandLink action="{!accountLocationMgr.sortToggle}" rerender="TablePanelSelected" status="TableUpdateStatusSelected" >
                                    <apex:param name="accountLocationMgr.SortField" value="Record_Number__c" assignTo="{!accountLocationMgr.SortField}" />
                                    <apex:outputText value="Record Number " />
                                    <apex:outputText escape="false" value="{!IF(accountLocationMgr.SortField=='Record_Number__c',IF(accountLocationMgr.SortDirection='asc','&#708;','&#709;'),'')}" />
                                </apex:commandLink>
                            </apex:facet>

                            <apex:outputText value="{!record.loc.Record_Number__c}" />
                        </apex:column>

            </apex:pageblocktable>

            </apex:facet>

    </apex:actionStatus>

         </apex:pageBlock>

</apex:component>
0

I have faced some similar errors. Not very sure what is the exact reason. But in such situations, copy the code and create it in salesforce manually. Then come to eclipse and use "Refresh from Server" to pull the component to eclipse/Mavensmate and continue development.

  • I tried your code and was able to save using developer console. I do not think Eclipse will behave differently if the syntax is correct. – Dave May 19 '15 at 0:47
  • I've run into similar problems using the developer console. It seems like a timing/file locking issue with the server. If it continues there's a URL for resetting but I always need the error message to find it via google. – sberley May 19 '15 at 2:25
  • I created the custom component using the Developer Console, pulled it down into Eclipse. I made a trivial change and tried to save it. I got the same "Save error: null" message. I'll try deleting my Force.com plugin from Eclipse and reinstalling it, just to be sure that isn't the issue. – Michael Sobczak May 19 '15 at 14:02
  • @Dave What version of Eclipse are you using? – Michael Sobczak May 19 '15 at 14:03
  • Mine is Eclipse Kepler only, Can you please confirm if the code is saved using developer console. IDE should not impose any restrictions. – Dave May 19 '15 at 14:06
0

I have faced the exact same error. The error is in Eclipse, in the Welkin Suite but also in the SF dev console. It will work only when saving directly from the SF UI.

After trying all possible solutions I realised the following. Just like you I was passing in a class instance into my component. The error was occurring where the class instance referenced a variable, i.e. in your case probably {!accountLocationMgr.SortField}. I changed that reference into a dynamic binding {!accountLocationMgr['SortField']} and the error just vanished...

Hope that helps.

0

The reason for this error may be when you refer to a property of an Apex type that doesn't exist (or is not visible)

It is not per se anything to do with facets nor does it have anything to do with Eclipse as I reproduced in Developer Console.

In the code example below, I reference a merge field on a class that doesn't exist and get the error you observed.

<apex:component >
<apex:attribute name="someObjs" type = "SomeClass[]" description="list of objects of SomeClass"/>
<apex:pageBlock>
    <apex:pageBlockTable value="{!someObjs}" var="r">

        <apex:column>
            <apex:outputText value="{!r.notAVariableOnClass}" />  <!-- "save error" - no additional info, no line# -->
        </apex:column>
 </apex:pageBlockTable>
</apex:pageBlock>                                           

So, in your case, I would check

  • {!accountLocationMgr.sortToggle} - Is this an action method on RFPAccountLocationMgr - no arguments, returns void or PageReference
  • {!accountLocationMgr.SortField} - is this a primitive, public variable on RFPAccountLocationMgr ?
  • accountLocationMgr.SortDirection - same question as above

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.