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
>> 
> 

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to