Martin,

I tried with :

ActionProxy proxy = actionProxyFactory.createActionProxy(namespace,
mapping.getName(), "execute", ctx);

Somehow the method name is coming in as null, so i hardcoded it to execute
for now ; need to see why.

This seems to work fine, i'm getting the errors as an alert box on the page,
but that's a different story.

Should i open a JIRA for this ?

Thanks,
Joseph




On Fri, May 15, 2009 at 6:41 AM, j alex <strutstwou...@gmail.com> wrote:

> Hi Martin,
>
> I had seen the configs in the struts-showcase, and used all of them as-is ;
> just added a javascript fn. to invoke DWR and was getting the NPE. So, looks
> like there's something broken in the default distro. I'll try your
> suggestion of using :
>
> *
>
> public
> * ActionProxy createActionProxy(String namespace, String actionName,
> String methodName, Map<String, Object> extraContext, *boolean*executeResult,
> *boolean* cleanupContext);
> instead of :
>
> *public* ActionProxy createActionProxy(ActionInvocation actionInvocation,
> String namespace, String actionName, String methodName,*boolean*executeResult,
> *boolean* cleanupContext);
>
> Hope this is what you meant?
>
> Thanks,
> Joseph
>
>
>
>
>
>
> On Fri, May 15, 2009 at 3:40 AM, Martin Gainty <mgai...@hotmail.com>wrote:
>
>>
>> the DWR configuration you will need is located at
>> struts-showcase\WEB-INF\dwr.xml
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <!-- START SNIPPET: dwr -->
>> <!DOCTYPE dwr PUBLIC
>>    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
>>    "http://www.getahead.ltd.uk/dwr/dwr10.dtd";>
>> <dwr>
>>    <allow>
>>        <create creator="new" javascript="validator">
>>            <param name="class"
>> value="org.apache.struts2.validators.DWRValidator"/>
>>        </create>
>>        <convert converter="bean"
>> match="com.opensymphony.xwork2.ValidationAwareSupport"/>
>>    </allow>
>>    <signatures>
>>        <![CDATA[
>>        import java.util.Map;
>>        import org.apache.struts2.validators.DWRValidator;
>>
>>        DWRValidator.doPost(String, String, Map<String, String>);
>>        ]]>
>>    </signatures>
>> </dwr>
>> <!-- END SNIPPET: dwr -->
>>
>> where the servlet would be defined in WEB-INF/web.xml configuration
>>   <servlet>
>>        <servlet-name>dwr</servlet-name>
>>        <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
>>        <init-param>
>>            <param-name>debug</param-name>
>>            <param-value>true</param-value>
>>        </init-param>
>>    </servlet>
>>    <servlet-mapping>
>>        <servlet-name>dwr</servlet-name>
>>        <url-pattern>/dwr/*</url-pattern>
>>    </servlet-mapping>
>>
>> the config files struts.xml or struts-default.xml would contain the bean
>> definitions for OgnlValueStackFactory e.g.
>>
>> <bean type="com.opensymphony.xwork2.util.ValueStackFactory" name="struts"
>> class="com.opensymphony.xwork2.ognl.OgnlValueStackFactory" />
>>
>> <bean type="com.opensymphony.xwork2.ActionProxyFactory" name="xwork"
>> class="com.opensymphony.xwork2.DefaultActionProxyFactory"/>
>>
>> your webapp's
>> execution flow is governed by interceptors you insert into (defaultStack)
>> interceptor stack declaration as seen here
>>            <interceptor-stack name="defaultStack">
>>                <interceptor-ref name="exception"/>
>>                <interceptor-ref name="alias"/>
>>                <interceptor-ref name="servletConfig"/>
>>                <interceptor-ref name="i18n"/>
>>                <interceptor-ref name="prepare"/>
>>                <interceptor-ref name="chain"/>
>>                <interceptor-ref name="debugging"/>
>>                <interceptor-ref name="profiling"/>
>>                <interceptor-ref name="scopedModelDriven"/>
>>                <interceptor-ref name="modelDriven"/>
>>                <interceptor-ref name="fileUpload"/>
>>                <interceptor-ref name="checkbox"/>
>>                <interceptor-ref name="staticParams"/>
>>                <interceptor-ref name="actionMappingParams"/>
>>                <interceptor-ref name="params">
>>                  <param name="excludeParams">dojo\..*,^struts\..*</param>
>>                </interceptor-ref>
>>                <interceptor-ref name="conversionError"/>
>>                <interceptor-ref name="validation">
>>                    <param
>> name="excludeMethods">input,back,cancel,browse</param>
>>                </interceptor-ref>
>>                <interceptor-ref name="workflow">
>>                    <param
>> name="excludeMethods">input,back,cancel,browse</param>
>>                </interceptor-ref>
>>            </interceptor-stack>
>>
>> The ActionProxyFactory is used to create ActionProxies to be executed. It
>> is the entry point to XWork that is used
>>  by a dispatcher to create an ActionProxy to execute for a particular
>> namespace and action name.
>>
>> where xwork 1.2.3 specifies createActionProxy with 5 parameters
>> createActionProxy(String namespace,
>>                  String actionName,
>>                  Map extraContext,
>>                  boolean executeResult,
>>                  boolean cleanupContext)
>>
>>
>> Creates an ActionProxy for the given namespace and action name by looking
>> up the configuration.
>>
>> instead of
>>  ActionProxy proxy = actionProxyFactory.createActionProxy(inv, namespace,
>> > mapping.getName(), mapping.getMethod(), *true*, *true*);
>>
>> switch the 1st arg of inv (assuming that contains action) and 2nd arg of
>> namespace(assuming that contains namespace) and drop getMethod() unless of
>> course that has the desired extraContext
>> then proxy.execute()
>> will set the ActionContext from the ActionInvocation into the desired
>> ActionContext
>>
>> documentation available at
>>
>> http://struts.apache.org/2.1.6/struts2-core/apidocs/com/opensymphony/xwork2/ActionProxy.html
>>
>> hope that answers your question
>> Martin
>> ______________________________________________
>> Disclaimer and Confidentiality/Verzicht und Vertraulichkeitanmerkung/Note
>> de déni et de confidentialité
>> This message is confidential. If you should not be the intended receiver,
>> then we ask politely to report. Each unauthorized forwarding or
>> manufacturing of a copy is inadmissible. This message serves only for the
>> exchange of information and has no legal binding effect. Due to the easy
>> manipulation of emails we cannot take responsibility over the the contents.
>> Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene
>> Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte
>> Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht
>> dient lediglich dem Austausch von Informationen und entfaltet keine
>> rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von
>> E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen.
>> Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le
>> destinataire prévu, nous te demandons avec bonté que pour satisfaire
>> informez l'expéditeur. N'importe quelle diffusion non autorisée ou la copie
>> de ceci est interdite. Ce message sert à l'information seulement et n'aura
>> pas n'importe quel effet légalement obligatoire. Étant donné que les email
>> peuvent facilement être sujets à la manipulation, nous ne pouvons accepter
>> aucune responsabilité pour le contenu fourni.
>>
>>
>>
>>
>> > Date: Fri, 15 May 2009 01:50:27 +0530
>> > Subject: Re: DWRValidator not working in Struts 2.1.6
>> > From: strutstwou...@gmail.com
>> > To: user@struts.apache.org
>>  >
>> > martin,
>> >
>> > i had seen the StrutsPrepareFilter API and as it says "Prepares the
>> request
>> > for execution by a later StrutsExecuteFilter filter instance. " . I've
>> both
>> > the StrutsPrepare and Execute filters configured plus the DWR servlet.
>> >
>> > You were mentioning a working example of DWRValidator in the showcase,
>> but i
>> > couldn't find it.
>> >
>> > My understanding is that when a DWR request is sent - it goes thru
>> > StrutsPrepareFilter ,  StrutsExecuteFilter (which executes the Action
>> > preceded by interceptor stack) , finally DWRServlet. So, by the time the
>> > request reaches DWRServlet, it would have done the validations and the
>> > errors would be populated.
>> >
>> > The point i'm confused is that in DWRValidator doPost method, there's
>> again
>> > a call to execute the Action like :
>> >
>> > ActionProxy proxy = actionProxyFactory.createActionProxy(inv, namespace,
>> > mapping.getName(), mapping.getMethod(), *true*, *true*);
>> > proxy.execute();
>> > and this fails for some reason since valuestackfactory is null.
>> >
>> > Thanks,
>> > Joseph
>> >
>> > On Fri, May 15, 2009 at 1:22 AM, Martin Gainty <mgai...@hotmail.com>
>> wrote:
>> >
>> > >
>> > > StrutsPrepareFilter documentation is available at
>> > >
>> > >
>> http://struts.apache.org/2.1.6/struts2-core/apidocs/org/apache/struts2/dispatcher/ng/filter/StrutsPrepareFilter.html
>> > >
>> > > there is a brand new feature that musachy put in svn on monday to
>> > > specifically work-around action execute
>> > > i would ping him to see if this made was built into latest distro
>> > >
>> > > Thanks,
>> > > Martin Gainty
>> > > ______________________________________________
>> > > Disclaimer and Confidentiality/Verzicht und
>> Vertraulichkeitanmerkung/Note
>> > > de déni et de confidentialité
>> > > This message is confidential. If you should not be the intended
>> receiver,
>> > > then we ask politely to report. Each unauthorized forwarding or
>> > > manufacturing of a copy is inadmissible. This message serves only for
>> the
>> > > exchange of information and has no legal binding effect. Due to the
>> easy
>> > > manipulation of emails we cannot take responsibility over the the
>> contents.
>> > > Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene
>> > > Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede
>> unbefugte
>> > > Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese
>> Nachricht
>> > > dient lediglich dem Austausch von Informationen und entfaltet keine
>> > > rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit
>> von
>> > > E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen.
>> > > Ce message est confidentiel et peut être privilégié. Si vous n'êtes
>> pas le
>> > > destinataire prévu, nous te demandons avec bonté que pour satisfaire
>> > > informez l'expéditeur. N'importe quelle diffusion non autorisée ou la
>> copie
>> > > de ceci est interdite. Ce message sert à l'information seulement et
>> n'aura
>> > > pas n'importe quel effet légalement obligatoire. Étant donné que les
>> email
>> > > peuvent facilement être sujets à la manipulation, nous ne pouvons
>> accepter
>> > > aucune responsabilité pour le contenu fourni.
>> > >
>> > >
>> > >
>> > >
>> > > > Date: Thu, 14 May 2009 23:55:34 +0530
>> > > > Subject: Re: DWRValidator not working in Struts 2.1.6
>> > > > From: strutstwou...@gmail.com
>> > > > To: mgai...@hotmail.com; user@struts.apache.org
>> > >  >
>> > > > Just wanted to make sure my email reached the full users' list. I
>> > > > still havent been able to make any progress on this. Has anyone got
>> > > > the DWRValidator working in Struts 2.1?
>> > > >
>> > > > On 4/24/09, j alex <strutstwou...@gmail.com> wrote:
>> > > > > Martin,
>> > > > >
>> > > > > I want DWRServlet to handle only the Action validations, not
>> Action
>> > > > > execution. I'm invoking the validator.doPost() when user tabs off
>> a
>> > > field
>> > > > > in
>> > > > > order to validate the entered data.
>> > > > >
>> > > > > I couldn't find the example you are referring to in
>> > > > > http://struts.apache.org/2.1.6/docs/tutorials.html . Could you
>> please
>> > > tell
>> > > > > me a specific link ?
>> > > > >
>> > > > > Thanks
>> > > > > s2user
>> > > > >
>> > > > >
>> > > > >
>> > > > > On Fri, Apr 24, 2009 at 7:50 PM, Martin Gainty <
>> mgai...@hotmail.com>
>> > > wrote:
>> > > > >
>> > > > >>  who handles the action execution DWRServlet or
>> > > > >> StrutsPrepareAndExecuteFilter?
>> > > > >>
>> > > > >> If you want to use DWRServlet to handle action execution you are
>> > > better
>> > > > >> off
>> > > > >> just using StrutsPrepareFilter to prepare the request as in this
>> > > example
>> > > > >>
>> > > > >>
>> > > > >>
>> > >
>> http://struts.apache.org/2.1.6/struts2-core/apidocs/org/apache/struts2/dispatcher/ng/filter/StrutsPrepareFilter.html
>> > > > >>
>> > > > >> web.xml entry
>> > > > >>     <filter>
>> > > > >>         <filter-name>struts-prepare</filter-name>
>> > > > >>
>> > > > >>
>> > >
>> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
>> > > > >>         <init-param>
>> > > > >>             <param-name>actionPackages</param-name>
>> > > > >>
>> > > <param-value>org.apache.struts2.showcase.person</param-value>
>> > > > >>         </init-param>
>> > > > >>     </filter>
>> > > > >>
>> > > > >> There is a very good example of StrutsPrepareFilter functionality
>> > > working
>> > > > >> in combination with DWRServlet in struts2-showcase tutorial
>> located at
>> > > > >>
>> > > > >>
>> > > > >>
>> > > > >
>> > > >
>> > >  >
>> ---------------------------------------------------------------------
>> > > > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
>> > > > For additional commands, e-mail: user-h...@struts.apache.org
>> > > >
>> > >
>> > > _________________________________________________________________
>> > > Hotmail® has a new way to see what's up with your friends.
>> > >
>> > >
>> http://windowslive.com/Tutorial/Hotmail/WhatsNew?ocid=TXT_TAGLM_WL_HM_Tutorial_WhatsNew1_052009
>> > >
>>
>> _________________________________________________________________
>> Insert movie times and more without leaving Hotmail®.
>>
>> http://windowslive.com/Tutorial/Hotmail/QuickAdd?ocid=TXT_TAGLM_WL_HM_Tutorial_QuickAdd1_052009
>>
>
>

Reply via email to