struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Geary <sabrew...@tri-lakesonline.net>
Subject Re: PROPOSAL: Template Screens
Date Thu, 01 Mar 2001 17:17:14 GMT
Cedric's got some good ideas here, and I agree with someone else who said he should be
a committer.

Craig?


david


Cedric Dumoulin wrote:

>   Hi David, and everybody,
>
>   I understand David's position, there is a proverb which said "who go slowly go
> surely" ;-)
>   But, please, don't forget that I have already work for a long time on Components
> proposal. A lot of peoples have tried them, and give positive feedback, as well as
> improvement, on proposed features. Also, people hesitate to use Components in long
> term because they are not sure that Components will be maintained if they are not
> part of a large project.
> I think that everyone could take advantages if we join our efforts to propose a
> strong "Extended Templates Proposal", rather than to propose two tools providing
> nearly the same.

>   Saying that, here are some ideas for Template Screens Proposal :
>   I think that we can reuse actual Templates syntax, rather than introducing too
> much new tags or using scriptlet. This will simplify learning and comprehension of
> Templates.
>
>   Following is an example of how we could define a screen inside a jsp :
> --------------
> <template:screenDefinition id='introductionScreen' scope='request'
> template='/chapterTemplate.jsp' >
>   <template:put name='title' content='Templates' direct='true'/>
>   <template:put name='header' content='/header.html' />
>   <template:put name='sidebar' content='/sidebar.jsp' />
>   <template:put name='content' content='/introduction.html'/>
>   <template:put name='footer' content='/footer.html' />
> </template:screenDefinition>
> ---------------
>
> To use it :
>   <template:insert definition='introductionScreen' />
>
> ---------------
> Or, if you want to overload one attribute :
>   <template:insert template='/anotherchapterTemplate.jsp'
> definition='introductionScreen' />
>
> ---------------
> Or,  if you want to overload or add others attributes :
>   <template:insert  definition='introductionScreen' >
>     <put name='title' content='Another Title' />
>     <put name='leftSidebar' content='/leftsidebar.jsp' />
>   </template:insert>'
>
> ---------------
>  Some comments :
>
>    * In the "screenDefinition", you can define all or only some of the attributes.
>      So, you can drop "template='/chapterTemplate.jsp' "
>    * If you specify some attributes in 'insert' tag, they overload previously
>      defined attributes, or add new one.
>    * This syntax is implementation independent : object produced by tag handler
>      'template:screenDefinition' could be a Map, or a complex structure.
>    * There is no 'role' attribute in the example, but we can use it.
>    * Advantage of this syntax is that it is the same than 'insert'. This syntax can
>      also be used in a xml description file, without introducing new concepts.
>    * Another advantage, is that there is no scriplet inside JSP page.
>
> Now, we need to find a way to define 'screenDefinition' outside a JSP page (ex: in
> action).
> A Map could be a candidate. But putting 'content', 'content-type' (direct) and
> 'role' inside Map's value is not so easy to use.
> We could thing of a class ScreenDefinition, having some method reflecting the tag
> syntax :
>   setTemplate( String templateName )
>   put( String name, Object content );
>   put( String name, Object content, boolean direct );
>   put( String name, Object content, boolean direct, String role );
>      ...
>   Such class could be easiest to use in code. Once an instance is created, it is
> put in servlet context (request, session, ...).
> Then, object is used in the same way as if it is define in the JSP page :
>   <template:insert definition='screenDefinitionName' />
>
> However, it is possible to implement <insert definition="aDefinition" /> in order
> to accept a Map as well as a ScreenDefinition, if we want to keep both
> possibilities.
>
>    Last, I thing that tag name 'template:screenDefinition' is too restrictive : we
> could effectively define a screen , but we can do much more with it, like defining
> a 'Component' ;-) . So maybe we need to propose something else for this tag name
> (first ideas : 'template:definition', or 'template:instance' ).
>
>     Cedric
>
> David Geary wrote:
>
> > I see template screens as a first step towards Cedric's Components. Template
> > screens provide the foundation necessary for Components: Programmatically
> > defining screens.
> >
> > The next step is adding support for defining screens from an XML file, whether
> > that's struts-config.xml or a separate file. Then we can add inheritance and
> > locale support.
> >
> > I want to build this iteratively, with a design that reflects Struts design
> > patterns (such as screen definitions that are analagous to the Map bean in the
> > Link tag)*, rather than adopting Cedric's code wholesale.
> >
> > I'm more than willing to have Cedric or others pitch in some code.
> >
> > david
> >
> > * The Struts map-bean-property-to-request-parameter design pattern.
> >
> > Cedric Dumoulin wrote:
> >
> > >   A kind of  "screen configuration" (called instances) is proposed in
> > > Components project, which can be seen as an extension of Templates.
> > >   Screens are defined in a configuration file. You can also have different
> > > configuration files for different Locale : appropriate screens will be loaded
> > > according to user Locale.
> > >   There is also an "inheritance"  mechanism allowing a screen to extend
> > > another screen : you define your main screen, and derived other screens from
> > > it, only changing what is relevant.
> > >   To no more about Components :
> > >     (main site) http://www.lifl.fr/~dumoulin/components/
> > >    (mirror)      http://www.geocities.com/cedricdumoulin//components
> > >
> > >   I am currently rewriting part of the code to allows easy addition of other
> > > "configuration file reader". Like this, it will be possible to load instances
> > > from, for example, a database. This will also allows dynamic change of
> > > instances. Code rewriting will not affect actual  tags syntax.
> > >
> > >    Cedric
> > >
> > > Maya Muchnik wrote:
> > >
> > > > Hi,
> > > > I think the screen configuration through a xml-file is made in Components
> > > > project (see for example,
> > > > componentInstances.xml file). It is very convenient. As you maybe know,
> > > > the project extends ActionServlet class.
> > > > Maya
> > > >
> > > > David Geary wrote:
> > > >
> > > > > Yes, that's a good idea, applicable for static screens.
> > > > >
> > > > > We should still allow for programmatic definitions, though. Servlets
or
> > > > > servlet filters are good candidates for creating dynamic screen
> > > > > definitions.
> > > > >
> > > > > david
> > > > >
> > > > > Wong Kok Wai wrote:
> > > > >
> > > > > > Is it possible to define the screen definition in the
> > > > > > struts-config.xml? I think this will be more flexible.
> > > > > >
> > > > > > __________________________________________________
> > > > > > Do You Yahoo!?
> > > > > > Get email at your own domain with Yahoo! Mail.
> > > > > > http://personal.mail.yahoo.com/


Mime
View raw message