Hi Jacopo, In theory we could do that but I think it might be problematic because a developer could very easily (and unknowingly) exclude the path from any links/form targets and bypass the preprocessor. If the request uri itself is contained within a separate and distinct controller file then they could not make this mistake, they'd either get a 404 type error or they'd hit the wrong request mapping in the main controller.
A possible use case for this feature could be the facility application, the screens for dealing with a single facility could be broken out into a separate sub-controller, you'd add a preprocessor that checks for a facilityId and if not present then redirects to the facility find screen. By doing this you'd never have to worry about a missing facilityId within the screens themselves. We could possibly even take it further and have sub-sessions/scopes for these types of screen groups (something like a MapStack overlaying the real session) and set the facilityId in there without it ever being carried outside of that group. Regards Scott On 16/02/2011, at 10:30 PM, Jacopo Cappellato wrote: > This is interesting, thanks Scott. > > Maybe another option could be that of adding a "condition" attribute to the > pre-processor element (like path="sub"). > > Jacopo > > On Feb 15, 2011, at 11:40 PM, Scott Gray wrote: > >> I regularly run into a situation where I need a pre-processor event to run >> only for a sub-set of a webapp's requests, usually within a particular group >> of screens (an example might be that you want to check that a specific >> session attribute or request parameter is set before allowing access to that >> set of requests). Currently you can only run an event for either a single >> request (request-map.event) or for every request (preprocessor.event) within >> a webapp, there isn't really any in-between. >> >> I threw together a quick PoC this morning for a sub-controller >> implementation that would allow a webapp to have multiple controllers. >> Basically you have your regular controller at /control/ but within the >> controller.xml you can define sub-controllers and the path that it should >> use: >> Main controller.xml >> <sub-controller >> location="component://example/webapp/example/WEB-INF/sub-controller.xml" >> path="sub"/> >> now every request to /control/sub/* will use the sub-controller.xml instead >> of the main controller and is handled in exactly the same way as the main >> controller would be. >> >> Any thoughts? >> >> Thanks >> Scott >> >> HotWax Media >> http://www.hotwaxmedia.com >> >
smime.p7s
Description: S/MIME cryptographic signature
