DWR in OpenMRS
OpenMRS uses dwr for AJAX. In a sentence, dwr converts java objects to javascript and vice versa.
DWR in core openmrs
Using DWR in a JSP page
<script src="<openmrs:contextPath/>/dwr/interface/DWRPatientService.js"></script>
<script>
DWRPatientService.findPatients("John", false, objectsFound);
function objectsFound(patients) {
alert("There are " + patients.length + " patients named john");
}
</script>
Adding DWR into your module
Add to config.xml:
<dwr>
<allow>
<create creator="new" javascript="DWRMyModuleService">
<param name="class" value="@MODULE_PACKAGE@.web.DWRMyModuleService"/>
<include method="getAllLocations"/>
</create>
</allow>
<signatures>
<![CDATA[
import @MODULE_PACKAGE@.web.DWRMyModuleService;
DWRMyModuleService.getAllLocations();
]]>
</signatures>
</dwr>
Create this class:
public class DWRMyModuleService {
public List<String> getAllLocations() {
List<String> locationNames = new Vector<String>();
for (Location loc : Context.getAllLocations()) {
locationNames.add(loc.getName());
}
return locationNames;
}