struts-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Karan Malhi <karan.ma...@gmail.com>
Subject Re: [QUESTION]
Date Sun, 22 Feb 2009 05:11:28 GMT
If a class has a suffix of Action or implements the Action interface, would
that automatically be treated as an action class?  Would such a class
require that it be listed in the struts.xml file?


On Sat, Feb 21, 2009 at 11:29 PM, Karan Malhi <karan.malhi@gmail.com> wrote:

> Thanks Wes,
>
> Appreciate such a prompt response.
>
>>
>> There are likely to be actions mapped via other means. There are many
>> plugins
>> available, most prominently the REST plugin and the Convention plugin that
>> allow our users to map actions without any XML
>
>
> So a user would need these plugins to map actions without XML. Struts
> default behavior would require a user to map the action in the XML file and
> that would be struts.xml, right? So would it be fair to say that if I parse
> the struts.xml file and all included xml files, then I will have a list of
> all available actions in the webapp (assuming user is not using the plugins
> you mentioned) ?
>
>>
>>
>> > 3. I was planning to write a plugin, but wanted to have access to the
>> > ServletContext within the plugin. Could you show me how to do that -- I
>> > tried implementing ServletContextAware in the plugin class, but that did
>> > not work for me (maybe that interface is only supposed to be implemented
>> by
>> > actions)
>>
>> That interface is meant for actions. The best way to get a ServletContext
>> is
>> to do the following from an interceptor -
>>
>> final ActionContext context = invocation.getInvocationContext();
>> ServletContext servletContext = (ServletContext)
>>
>> context.get(org.apache.struts2.StrutsStaticsSERVLET_CONTEXT);
>>
>
> Although I did not manage to get access to  the actual ServletContext, I
> believe ActionContext.getContext().getApplication() would give me access to
> the Map of context attributes. Since I just need to  read an attribute from
> it, I believe this approach should suffice.
>
>>
>> You may face a few issues though. I've thought briefly about EJB + Struts2
>> lately and I'll admit to a lack of experience with EJB, but it seems to me
>> that it would be somewhat difficult to combine the two easily. Many of the
>> EJB
>> annotations can appear on private members (i.e. @PersistenceContext). In
>> Struts2, we create actions via our own ObjectFactory, which can be
>> overridden
>> by a plugin.
>>
> On application startup we collect information about all classes which need
> injection. Then when instances of classes are created, we use that
> information to perform injection. The plugin which I wanted to write would
> be an ObjectFactory and I intended to override the buildBean method and
> perform the injection there. Actually, I just realized that I could get
> access to the Map of ServletContext attributes as shown below:
>   public class OpenEJBObjectFactory extends ObjectFactory{
>    public Object buildBean(Class clazz, Map map) throws Exception {
>         Map application = (Map)map.get("application");
>        // THIS IS WHERE I COULD READ THE ATTRIBUTE AND
>       // CREATE THE ACTION INSTANCE AND PERFORM INJECTION
>    }
> }
>
>
>>
>> I'm not particularly familiar with OpenEJB, but I'd like to help however I
>> can. So, let me know if you need the help.
>>
> Excellent. I really appreciate it. You are already helping in a great way
> by answering my questions. Thank you so much.
>
>>
>> -Wes
>> --
>>
>> Wes Wannemacher
>> Author - Struts 2 In Practice
>> Includes coverage of Struts 2.1, Spring, JPA, JQuery, Sitemesh and more
>> http://www.manning.com/wannemacher
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
>> For additional commands, e-mail: dev-help@struts.apache.org
>>
>>
>
>
> --
> Karan Singh Malhi
>



-- 
Karan Singh Malhi

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message