SES interceptors prevents Implicit view dispatch on views in the root of the views directory.

Description

if an application using SES has the following view:
/views/test.cfm
you cannot implicitly dispatch it with the following URL:
example.com/index.cfm/test

The error is The event: test.index is not valid registered event.. This is because the SES interceptor onRequestCapture assumes "test" is a handler and defaults the "index" action. By the time HandlerService.isViewDispatch() runs, the "index" has already been added which runs the event name and prevents it from matching anything.

Placing the view in a subfolder works because the SES interceptor thinks there is an action and doesn't touch the event.

I'm not sure how to fix this since the request capture happens much sooner in the request lifecycle than the handler and action resolution that happens in the HandlerService.

I did a quick test was able simply remove the logic from the SES interceptor that defaults the action to "index" and it appeared to work. Hitting a URL with a handler and no action still defaulted to index anyway-- presumably via the same logic that kicks in when not using the SES interceptor. I don't know what other side effects that change might have. I can send a pull request if you want to see the changes I tried.

Activity

Show:
Brad Wood
February 3, 2014, 10:35 PM
Fixed

Assignee

Luis Majano

Reporter

Brad Wood

Labels

None

Components

Fix versions

Priority

Major
Configure