You need to sign in to do that
Don't have an account?
Julien Salenson
lightning:dualListbox save bug
I have a very strange error.
I have developped a component with lightning:dualListbox.
I have a button 'enregistrer' in controller to save this ordered list (Call when I hit button Save)
But sometimes "enregistrer" return null after the call back on :
actionEnregistrer.setCallback(this, function(actionResult) {
...
if(actionResult.getReturnValue()==null){
service.showWarningToast('Le composant APEX ne répond pas, impossible de sauvegarder !');
}
The strange things is, if i open developper console in another tab, and go back to my component, it's working !
Very strange, isn't it ?
Well do you have an idea where this bug come from ?
Component is :
Controller is :
APEX is:
I have developped a component with lightning:dualListbox.
I have a button 'enregistrer' in controller to save this ordered list (Call when I hit button Save)
But sometimes "enregistrer" return null after the call back on :
actionEnregistrer.setCallback(this, function(actionResult) {
...
if(actionResult.getReturnValue()==null){
service.showWarningToast('Le composant APEX ne répond pas, impossible de sauvegarder !');
}
The strange things is, if i open developper console in another tab, and go back to my component, it's working !
Very strange, isn't it ?
Well do you have an idea where this bug come from ?
Component is :
<lightning:dualListbox name="multipleOptions" sourceLabel="Corbeille" selectedLabel="Affiché" options="{!v.listOptions}" value="{!v.selectedOptions}" /> <lightning:button variant="brand" iconName="utility:save" label="Enregistrer" title="Enregistrer" onclick="{! c.enregistrer }"/>
Controller is :
enregistrer: function(component, event, helper) { let service = component.find('service'); var selectedOptionValue = component.get("v.selectedOptions");//component.get("v.selectedArray"); var typeObj = component.get("v.typeObj"); if(selectedOptionValue!=null && typeObj!=null){ console.log("Option selected with value: '" + selectedOptionValue.toString() + "'"); var actionEnregistrer = component.get("c.doSaveOrder"); actionEnregistrer.setParams({ tabOrderedLine : selectedOptionValue, typeObj :typeObj }); //Setting the Callback actionEnregistrer.setCallback(this, function(actionResult) { console.log('enregistrer:setCallback'); console.log('actionResult:'+actionResult.getReturnValue()); if(actionResult.getReturnValue()==null){ service.showWarningToast('Le composant APEX ne répond pas, impossible de sauvegarder !'); } else{ var result=actionResult.getReturnValue()[0]; console.log('result:'+result); var resultMessage=actionResult.getReturnValue()[1]; console.log('resultMessage:'+resultMessage); //check if result is successfull if(result=='0'){ console.log('avant showSuccessToast'); service.showSuccessToast(resultMessage); console.log('apres showSuccessToast'); helper.clickBackToConfig(component, event); } else{ service.showWarningToast('Erreur :'+resultMessage); } } }); //adds the server-side action to the queue $A.enqueueAction(actionEnregistrer); } else{ if(selectedOptionValue==null) service.showWarningToast('Impossible de charger la selection'); else service.showWarningToast('Le type d\'objet n\'a pas été chargé :'+typeObj); } },
APEX is:
//Sauver l'odre des options @AuraEnabled public static List<String> doSaveOrder(List<String> tabOrderedLine, String typeObj) { List<id> lIdSelected = new List<id>(); List<String> ReturnString=new List<String>(); List<score_setting_field_mapping__c> sco_field_map_toUpdate = new List<score_setting_field_mapping__c>(); if(tabOrderedLine.size()>0){ String debug = ''; score_setting_field_mapping__c[] sco_field_map; //Perform Operation with records (cutted) update sco_field_map_toUpdate; ReturnString.add('0'); ReturnString.add('Sauvegarde effectuée !'); } else{ ReturnString.add('1'); ReturnString.add('Vous devez modifier l\'odre d\'au moins une ligne'); } return ReturnString; }