Skip to content

Commit 9b4dbdd

Browse files
dkayiwaCopilot
andcommitted
Replace LegacyCatchAllController with direct handler mappings
Instead of routing all requests through a catch-all controller that manually dispatches based on file extension, use Spring's SimpleUrlHandlerMapping with pattern-based mappings: - /**/*.htm -> springController (UrlFilenameViewController) - /**/*.portlet -> portletController (generic) - /**/*.field -> fieldGenController - Specific portlet patterns -> dedicated portlet controllers This fixes included request handling (pageContext.include) since Spring's handler mapping correctly uses jakarta.servlet.include.* attributes, whereas LegacyCatchAllController used request.getRequestURI() which returns the original request URI during includes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent c957848 commit 9b4dbdd

File tree

2 files changed

+15
-165
lines changed

2 files changed

+15
-165
lines changed

omod/src/main/java/org/openmrs/web/controller/LegacyCatchAllController.java

Lines changed: 0 additions & 148 deletions
This file was deleted.

omod/src/main/resources/webModuleApplicationContext.xml

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -123,27 +123,25 @@
123123
<prop key="admin/provider/providerAttributeType.list">providerAttributeTypeList</prop>
124124
<prop key="admin/provider/providerAttributeType.form">providerAttributeTypeForm</prop>
125125

126-
<prop key="/**">legacyCatchAllController</prop>
126+
<!-- Extension-based catch-all mappings -->
127+
<prop key="/**/*.htm">springController</prop>
128+
<prop key="/**/*.portlet">portletController</prop>
129+
<prop key="/**/*.field">fieldGenController</prop>
130+
131+
<!-- Specific portlet controllers (more specific patterns take precedence) -->
132+
<prop key="/**/globalProperties.portlet">globalPropertyPortletController</prop>
133+
<prop key="/**/addressLayout.portlet">addressLayoutPortletController</prop>
134+
<prop key="/**/nameLayout.portlet">nameLayoutPortletController</prop>
135+
<prop key="/**/patientPrograms.portlet">patientProgramsPortletController</prop>
136+
<prop key="/**/personRelationships.portlet">personRelationshipsPortletController</prop>
137+
<prop key="/**/patientEncounters.portlet">patientEncountersPortletController</prop>
138+
<prop key="/**/patientVisits.portlet">patientVisitsPortletController</prop>
139+
<prop key="/**/personFormEntry.portlet">personFormEntryPortletController</prop>
127140
</props>
128141
</property>
129142
</bean>
130-
131-
<bean id="springController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />
132143

133-
<bean id="legacyCatchAllController" class="org.openmrs.web.controller.LegacyCatchAllController">
134-
<property name="springController" ref="springController"/>
135-
<property name="fieldGenController" ref="fieldGenController"/>
136-
<property name="portletController" ref="portletController"/>
137-
138-
<property name="globalPropertyPortletController" ref="globalPropertyPortletController"/>
139-
<property name="addressLayoutPortletController" ref="addressLayoutPortletController"/>
140-
<property name="nameLayoutPortletController" ref="nameLayoutPortletController"/>
141-
<property name="patientProgramsPortletController" ref="patientProgramsPortletController"/>
142-
<property name="personRelationshipsPortletController" ref="personRelationshipsPortletController"/>
143-
<property name="patientEncountersPortletController" ref="patientEncountersPortletController"/>
144-
<property name="patientVisitsPortletController" ref="patientVisitsPortletController"/>
145-
<property name="personFormEntryPortletController" ref="personFormEntryPortletController"/>
146-
</bean>
144+
<bean id="springController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />
147145

148146
<!-- ** Patient ** -->
149147

0 commit comments

Comments
 (0)