Månadens Experttips – Multiple partial refresh

Månadens Experttips – Multiple partial refresh

Partial refresh är en mycket användbar funktion vid kodning av XPages.
Istället för att ladda om hela sidan för att visa en förändring kan delar av sidan uppdateras.
Tekniken i bakgrunden är gammal hederlig AJAX.
För att ladda om en del av sidan kan till exempel en span eller div laddas om.

Ibland vill man kunna ladda om två olika delar av sidan och skicka med ett argument vid uppdateringen.
Som tur är kan detta göras ganska enkelt med hjälp av metoden XSP.partialRefreshGet.

Ladda ner koden MPR-code.txt

Koden nedan laddar om tre olika sektioner, de första två tar emot en parameter

XSP.partialRefreshGet("#{id:myElementIDToRefresh}", {
    params: {'$$xspsubmitvalue':valueToPassToElement},
    onComplete: function(){
       XSP.partialRefreshGet("#{id:myElementIDToRefresh}", {
          params: {'$$xspsubmitvalue':valueToPassToElement},
          onComplete: function() {
             XSP.partialRefreshGet("#{id:myElementIDToRefresh}", {});
          }
       });
    }
});

Självklart kan även annan kod köras efter att sektioner uppdaterats, tex. öppnandet av en dojo-dialog

XSP.partialRefreshGet("#{id:myElementIDToRefresh}", {
      params: {'$$xspsubmitvalue':valueToPassToElement},
      onComplete: function(){
          XSP.openDialog('#{id:inPlaceDialog}');
      }
});

Den skickade parametern “valueToPassToElement” kan läsas av det uppdaterade elementet genom koden nedan

if(context.getSubmittedValue() != null){
     docUnid = context.getSubmittedValue();
     viewScope.put('dojoDialog_unid', docUnid);
}else{
     viewScope.put('dojoDialog_unid', '');
}

Eftersom partial refresh använder sig av AJAX så kan även timeout för anropet ändras

//timeout angiven i millisekunder
XSP.submitLatency = 60000;


Ladda ner koden MPR-code.txt

Tags:
, ,