[opencms-dev] Struts integration as module
Sverker Abrahamsson
sverker at abrahamsson.com
Wed Mar 9 00:38:03 CET 2005
Hi EJ,
I don't want to create Form and Action classes from the workplace but I
almost always use dynamic forms. You are right though that since the action
implementation depends on the form used it might not be so interesting to
create them from the workplace.
However, action mappings is a different story. I have a number of general
actions that e.g. fetch a bunch of data that are to be displayed on
different pages. Depending on the category of data I want the presentation
to be different. Today, when I don't use OpenCms I have a number of action
mappings to the same Action, with different forwards.
The people who are to create the action mappings are my co-developers so
they know Struts, however what we want to avoid is to have to redeploy the
whole app as long as we haven't changed any java code.
My question is not so much regarding Struts in this case, I think I have
figured out how I want to integrate it, but about how I add a file type in a
module. If I would do it directly to the core, I add a explorertype element
to opencms-workplace.xml and a resourceloader and resourcetype to
opencms-vfs.xml, implement the corresponding classes (CmsStrutsActionLoader,
CmsResourceTypeStrutsAction) and a jsp, newresource_struts.jsp to be used
when creating a new action mapping.
Using a resource loader means that the request would pass through the
OpenCms servlet and go through the normal path with checking for access
rights etc before being handed over to a Struts RequestDispatcher. It should
at the same time be possible to add a StrutsActionServlet mapping to web.xml
and invoke struts the usual way. With the Struts module mechanism it's quite
easy to connet them together.
But your mail show that this should be put in a module, not in the core, as
there are a few different ways to do it and peoples preferences are
different.
/Sverker
----- Original Message -----
From: "Erik-Jan Spaans" <E.J.Spaans at inter.NL.net>
To: "The OpenCms mailing list" <opencms-dev at opencms.org>
Sent: Tuesday, March 08, 2005 11:47 PM
Subject: Re: [opencms-dev] Struts integration as module
> Hi Sverker,
>
> I basically took the following approach:
> 1. create a module called <companyname>.opencms.struts containing the
> Struts.jar and struts-config.xml and other config files (validation) etc.
> 2. for each Struts application, create an additional module called
> <companyname>.opencms.struts.<appname> containing the applications jar
> file with Actions and ActionForms and the <modulename>-config.xml (using
> the Struts module functionality).
> 3. All additional struts based modules are dependent on the base Struts
> module.
> 4. Make sure the struts-config files are written to the right location.
>
> This approach has a disadvantage: web.xml has to be edited to add each
> Struts module as init-parameter. But maybe an extended version of the
> Struts base module can be created that uses JMX or some other tool to edit
> the web.xml file.
>
> Personally I don't see many advantages in letting users of the system
> create mappings, forms and forwards. The user cannot create a Struts form
> without extensive knowledge of the internals of the backing form bean
> (mapping of form elements to bean properties etc.), and probably also of
> the Struts Action.
>
> I do see advantages of users including the forms and views from an
> installed module in their pages. Of course, then the correct flow
> according to the action mappings has to be safeguarded. By this I mean:
> when you specify in your action mapping that the "success" forward of
> Action A must forward to "/opencms/somepath/somefile", the user must
> include your Struts form or view in that location. Still have to figure
> out how to do this!
>
> Best regards,
> EJ
>
> Sverker Abrahamsson wrote:
>
>> I am currently looking into integrating support for Struts into OpenCMS
>> with the following requirements:
>>
>> * A struts action mapping should be created like any other new
>> resource in the Explorer view. All parameters, as well as
>> forwards should be set from the dialog.
>> * Forms, global forwards etc should be edited from the
>> Administration view.
>> * Management of the Action classes themselves are not part of the
>> scope, they are either installed as jar files in WEB-INF/lib or
>> loaded as module.
>> * Compatibility with the traditional way of configuring struts in
>> web.xml and struts-config.xml.
>>
>> I have more or less figured out how to integrate with Struts, with a
>> loader and file type class in OpenCMS. However, today I read a posting on
>> the mailing list (OpenCMS 6.0 : Is it possible to add a
>> new(xml-)contenttype only by importing a module) with the answer that
>> yes, it is possible and that templateone is a such example.
>> Now my question is, would it be possible to do the same for Struts? I
>> think it would be better to package it as a module than to integrate it
>> to the core. However, when I look at templateone demo, I can't figure it
>> out. What should I look for?
>> Best regards
>> Sverker
>>
>>------------------------------------------------------------------------
>>
>>
>>
>>_______________________________________________
>>This mail is send to you from the opencms-dev mailing list
>>To change your list options, or to unsubscribe from the list, please visit
>>http://mail.opencms.org/mailman/listinfo/opencms-dev
>>
>
>
>
> _______________________________________________
> This mail is send to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list, please visit
> http://mail.opencms.org/mailman/listinfo/opencms-dev
>
More information about the opencms-dev
mailing list