I think "controllers" should stay, but the name should be changed.
Call them ViewPreparers or something...

On 10/5/06, Greg Reddin <[EMAIL PROTECTED]> wrote:

On Oct 5, 2006, at 9:53 AM, Antonio Petrelli wrote:

>>    * The controllers were added to allows stand alone use of tiles to
>>      be able to do some kind of computation associated to the tiles.
>>      When used with Struts, there is a redundancy (with the use of
>>      actions), but when used alone, the controller mechanism is very
>>      useful to separate view rendering from controller business
>
> The problem with Tiles controllers is that the controller is not
> able to
> choose between different destination pages. It misses an important
> part
> of a controller: the dispatcher.
> But using a normal url as a template (or tile :-) ) it can do both
> calling the model and dispatching. If you download the latest version
> from SVN, there is a test with a simple servlet that includes a (fixed
> for the moment) JSP page.
> And I think that including a Controller in a View layer technology is
> not a good idea.

Here's what I envision for the controller:  I don't think it would
really be used to change the destination of the response.  I don't
see the controller as being analogous to a Struts action even though
it could be used in that way.  If I wanted the controller to be used
as a "controller" in the MVC sense of the word (IOW to select a
destination) I'd want it to return something like actions do in
Struts, WebWork, and JSF.  I've always used the controller like a JSP
tag.  I use it to implement code that needs to reside in the view
layer (or code that needs to be called from the view layer) and as a
way to keep from writing scriptlet code in my JSPs.

It just so happens that the controller API gives you indirect access
to the request and response objects so you could use them to include
or forward or write directly to the response and all the other stuff
you can do there.  But I'd not recommend the controller be used in
this way.  I would use the controller to manipulate the TilesContext
and the JSP contexts, but not to actually "do anything" with regards
to changing the destination.

In today's world if I was writing a Struts app with Tiles I would try
to use JSTL, EL, custom tags, (or in JSF, action listeners, etc). to
do things I did in the past with controllers.  But I can still see
circumstances where I might want a controller instead.

Think about this:  Tiles can be used for page composition outside of
any MVC framework.  In that sense it's kind of like a portlet
container.  (In fact I think that's how Cedric envisioned it before
JSR-168 came about).  So you can compose pages out of JSP fragments
and populate each fragment with a controller that is executed before
the fragment is processed and included.  I actually have written a
couple of small webapps that use Tiles in this way and see it as a
powerful feature.

I think we should retain the controller for Tiles definitions (not
sure about the insert tag).  I also think we should document the fact
that you can get yourself into all kinds of trouble by making
improper use of the request and response APIs from within the
controller.

Thoughts?
Greg



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to