I am currently trying to call an Apex controller function from an apex:actionFunction, but I can't seem to get the parameters to be passed to the controller function.
ActionFunction
<apex:actionFunction name="Sign_Up" action="{!SignUp}">
<apex:param id="deliveryId_signup" name="deliveryId_signup" value="" assignTo="{!deliveryId}"/>
<apex:param id="slotType_signup" name="slotType_signup" value="" assignTo="{!slotType}"/>
</apex:actionFunction>
Button
<button type="button" class="btn btn-primary btn-block" onclick="Sign_Up('{! deliveriesDateMap[date][school][delivery].delivery.Id }','Signed Off');"> Sign Up </button>
Apex Function
public String deliveryId { get; set; }
public String slotType { get; set; }
public PageReference SignUp() {
//I have tried to also get the params using the options below, but no success
String passedParam1 = Apexpages.currentPage().getParameters().get('deliveryId_signup');
System.debug(passedParam1);
String passedParam2 = System.CurrentPageReference().getParameters().get('deliveryId_signup');
System.debug(passedParam2);
try{
Contact c = [SELECT Id FROM Contact WHERE Id =:contactId];
Delivery__c d = deliveriesMap.get(deliveryId);
Attendance_Slot__c slot = new Attendance_Slot__c (
Delivery__c = deliveryId,
Type__c = slotType,
Contact__c = c.Id
);
insert slot;
successMessage = 'You have successfully signed up for the delivery';
} catch(Exception e) {
errorMessage = 'There was an error signing you up for the delivery\nError: ' + e.getMessage() + '\tLine: ' + e.getLineNumber() + '\t' + e.getCause() + '\t' + e.getStackTraceString();
}
return null;
}
Any help trying to understand why are the fields not being populated on the controller function would be great!
deliveryId
andslotType
? Also as I can remember there was one issue where you had torerender
a dom element on the action function to get it working. Not sure it is still the case. May be set rerender attribute on actionfucntion to a dom element and see whether it works!