struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Gainty <mgai...@hotmail.com>
Subject RE: DWRValidator not working in Struts 2.1.6
Date Thu, 14 May 2009 22:10:08 GMT

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: strutstwouser@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 <mgainty@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: strutstwouser@gmail.com
> > > To: mgainty@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 <strutstwouser@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 <mgainty@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-unsubscribe@struts.apache.org
> > > For additional commands, e-mail: user-help@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
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message