Wiki Spaces
Documentation
Projects
Resources
Get Help from Others
Q&A: Ask OpenMRS »
Discussion: OpenMRS Talk »
Real-Time: IRC Chat
milThis tutorial illustrates how to use RequestMappers to override pages and fragments provided by other modules within your custom module.
This functionality requires the following modules:
1. App Framework 2.8
2. EMR API 1.16
3. UI Framework 3.6
This demo requires the following additional modules which has the overridden pages:
1. Reference Application 2.3
2. App UI 1.5.1
The overrides illustrated in this tutorial can be found in this github repo https://github.com/ssmusoke/openmrs-module-mapperoverridedemo.git
@Component public class DemoHeaderFragmentRequestMapper implements FragmentRequestMapper { protected final Log log = LogFactory.getLog(getClass()); /** * Implementations should call {@link FragmentRequest#setProviderNameOverride(String)} and * {@link FragmentRequest#setFragmentIdOverride(String)}, and return true if they want to remap a request, * or return false if they didn't remap it. * * @param request may have its providerNameOverride and pageNameOverride set * @return true if this page was mapped (by overriding the provider and/or page), false otherwise */ public boolean mapRequest(FragmentRequest request) { log.info(request.toString()); if (request.getProviderName().equals("appui")) { if (request.getFragmentId().equals("header")) { // change to the custom fragment provided by the module request.setProviderNameOverride("mapperoverridedemo"); request.setFragmentIdOverride("demoHeader"); // no need to specify this if the name of the fragment is the same as the one being over log.info(request.toString()); return true; } } // no override happened return false; } }
@Component public class DemoLoginPageRequestMapper implements PageRequestMapper { protected final Log log = LogFactory.getLog(getClass()); /** * Implementations should call {@link PageRequest#setProviderNameOverride(String)} and * {@link PageRequest#setPageNameOverride(String)}, and return true if they want to remap a request, * or return false if they didn't remap it. * * @param request may have its providerNameOverride and pageNameOverride set * @return true if this page was mapped (by overriding the provider and/or page), false otherwise */ public boolean mapRequest(PageRequest request) { if (request.getProviderName().equals("referenceapplication")) { if (request.getPageName().equals("login")) { // change to the custom login provided by the module request.setProviderNameOverride("mapperoverridedemo"); request.setPageNameOverride("demoLogin"); log.info(request.toString()); return true; } } // no override happened return false; } }