Perfect.  Changing my interceptor-ref to the following resolved this:

<interceptor-ref name="jsonValidationWorkflowStack">
  <param name="params.excludeParams">struts\..*</param>
</interceptor-ref> 

> -----Original Message-----
> From: Musachy Barroso [mailto:[EMAIL PROTECTED] 
> Sent: Monday, June 16, 2008 8:43 AM
> To: Struts Users Mailing List
> Subject: Re: Some confusion trying to do ajax form submit
> 
> Don't worry about those exceptions. The params interceptor is 
> trying to bind those parameters to your action and it is 
> failing. If you want to silence the param interceptor, it has 
> a "excludeParams" property that takes a list of regular expressions:
> 
>  <interceptor-ref name="params">
>       <param name="excludeParams">dojo\..*</param>
>  </interceptor-ref>
> 
> will ignore any parameter that has "dojo." in it.
> 
> musachy
> 
> On Mon, Jun 16, 2008 at 11:31 AM, Karr, David 
> <[EMAIL PROTECTED]> wrote:
> > So far I think the client side is getting the correct 
> response, both 
> > with and without field errors (although I haven't plugged in the 
> > automated processing of the field errors on the client side yet).
> > However, on the server side I'm seeing two exceptions (the other is 
> > for the other property, "validateOnly"):
> >
> > ognl.OgnlException: target is null for setProperty(null, 
> > "enableJSONValidation", [Ljava.lang.String;@a4ed99)
> >        at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:1651)
> >        at ognl.ASTProperty.setValueBody(ASTProperty.java:101)
> >        at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177)
> >        at ognl.SimpleNode.setValue(SimpleNode.java:246)
> >        at ognl.ASTChain.setValueBody(ASTChain.java:172)
> >        at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177)
> >        at ognl.SimpleNode.setValue(SimpleNode.java:246)
> >        at ognl.Ognl.setValue(Ognl.java:476)
> >        at
> > com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:197)
> >        at
> > 
> com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.ja
> > va
> > :150)
> >        at
> > 
> com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.ja
> > va
> > :138)
> >        at
> > 
> com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameter
> > s(
> > ParametersInterceptor.java:205)
> >
> > When examining the request parameters, the values for each 
> of these is 
> > a single element array with the value "true".
> >
> > In Firebug, it shows the POST parameters as:
> >
> > firstName       joe
> > lastName        blow
> > struts.enableJSONValidation     true
> >
> > As I said, despite these exceptions, the client side appears to be 
> > getting the correct response, so the server side is clearly 
> receiving 
> > and setting the "enableJSONValidation" flag.  I don't know 
> what other 
> > symptoms the exception might be causing.  I don't see anything yet.
> >
> >> -----Original Message-----
> >> From: Musachy Barroso [mailto:[EMAIL PROTECTED]
> >> Sent: Sunday, June 15, 2008 5:09 PM
> >> To: Struts Users Mailing List
> >> Subject: Re: Some confusion trying to do ajax form submit
> >>
> >> Take a look at this (2.1 only):
> >>
> >> http://struts.apache.org/2.0.11.1/docs/ajax-validation.html
> >>
> >> musachy
> >>
> >> On Sun, Jun 15, 2008 at 8:02 PM, Karr, David <[EMAIL PROTECTED]> 
> >> wrote:
> >> > I have a simple page with validation that I got working with a 
> >> > conventional submit and action.
> >> >
> >> > I'm now trying to explore doing an Ajax form submit, and 
> getting a 
> >> > JSON response.  I'm using YUI on the client side.  I'd like
> >> to see if
> >> > I can get similar data in the JSON response that I would in
> >> a normal
> >> > submit, for instance, with field errors.
> >> >
> >> > There are a couple points I could use some help with, not
> >> necessarily
> >> > related to Ajax or JSON.  Please don't hesitate to tell 
> me if I'm 
> >> > doing something else wrong, or something I should be aware of.
> >> >
> >> > My first attempt actually did execute the Ajax request, 
> and got the 
> >> > response, but it wasn't JSON.  The responseText was just
> >> the HTML of
> >> > my source JSP, which is also the value of my "input"
> >> result.  I tried
> >> > setting up the JSON action without an "input" result, but
> >> it seemed to
> >> > complain if I didn't have that.  I would have thought the "input"
> >> > parameter wouldn't be relevant in a Ajax/JSON action.  If I
> >> filled in
> >> > all the required fields so it didn't result in any field
> >> errors, the
> >> > response was JSON, and it was reasonable (although setting 
> >> > "wrapWithComments" didn't appear to have any effect).  I
> >> guess there's
> >> > no automatic provision for reporting field errors in a JSON
> >> response,
> >> > so I guess I'll have to build something like that by hand?
> >> >
> >> > Note that I tried to enable the logging interceptor, but I
> >> didn't see
> >> > any output from it.
> >> >
> >> > I have a single action that I was intending to use to
> >> handle both the
> >> > ajax and non-ajax submit.  I tried to make it use two
> >> different action
> >> > names in the form, but it seemed to have trouble with that.
> >> >
> >> > I noticed in the generated HTML, I had this in the HTML for the 
> >> > form
> >> > tag:
> >> >
> >> >        onsubmit="return YAHOO.strutsform.submitform();;
> >> return true;"
> >> >
> >> > I'm not sure if that "return true;" will cause me 
> trouble, as I'm 
> >> > trying to bypass the normal form submission.  I think by 
> returning 
> >> > false from "submitform", I achieved that, however.
> >> >
> >> > I'll include here the relevant files.  Please comment where
> >> appropriate.
> >> > Thanks for your input.
> >> > ---form.jsp------------
> >> > <%@ page language="java" contentType="text/html; charset=UTF-8"
> >> >    pageEncoding="UTF-8"%>
> >> > <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE 
> html PUBLIC 
> >> > "-//W3C//DTD HTML 4.01 Transitional//EN"
> >> > "http://www.w3.org/TR/html4/loose.dtd";>
> >> > <html>
> >> > <head>
> >> > <meta http-equiv="Content-Type" content="text/html; 
> charset=UTF-8"> 
> >> > <title>Struts Form</title> <link rel="stylesheet"
> >> >
> >> 
> href="${pageContext.request.contextPath}/struts/css_xhtml/styles.css"
> >> > type="text/css">
> >> > <link rel="stylesheet" type="text/css"
> >> > href="${pageContext.request.contextPath}/style/form.css">
> >> > <!-- css -->
> >> > <link rel="stylesheet" type="text/css"
> >> >
> >> 
> href="${pageContext.request.contextPath}/yui/reset-fonts-grids/reset-
> >> f
> >> > on
> >> > ts-grids.css">
> >> > <link rel="stylesheet" type="text/css"
> >> >
> >> 
> href="${pageContext.request.contextPath}/yui/button/assets/skins/sam/
> >> b
> >> > ut
> >> > ton.css">
> >> > <link rel="stylesheet" type="text/css"
> >> >
> >> 
> href="${pageContext.request.contextPath}/yui/logger/assets/skins/sam/
> >> l
> >> > og
> >> > ger.css">
> >> > <!-- js -->
> >> > <script type="text/javascript"
> >> >
> >> 
> src="${pageContext.request.contextPath}/yui/utilities/utilities.js"><
> >> /
> >> > sc
> >> > ript>
> >> > <script type="text/javascript"
> >> >
> >> 
> src="${pageContext.request.contextPath}/yui/button/button-debug.js"><
> >> /
> >> > sc
> >> > ript>
> >> > <script type="text/javascript"
> >> >
> >> 
> src="${pageContext.request.contextPath}/yui/json/json-debug.js"></scr
> >> i
> >> > pt
> >> >>
> >> > <script type="text/javascript"
> >> >
> >> 
> src="${pageContext.request.contextPath}/yui/logger/logger-debug.js"><
> >> /
> >> > sc
> >> > ript>
> >> > <script type="text/javascript"
> >> >
> >> 
> src="${pageContext.request.contextPath}/scripts/strutsform.js"></scri
> >> p
> >> > t>
> >> > </head>
> >> > <body class="yui-skin-sam">
> >> >    <h4>Enter your data</h4>
> >> >    <!--  onsubmit="return YAHOO.strutsform.submitform();" -->
> >> >    <s:form id="form" action="Form" onsubmit="return 
> >> > YAHOO.strutsform.submitform();">
> >> >        <s:textfield name="lastName" label="Last Name"/>
> >> >        <s:textfield name="firstName" label="First Name"/>
> >> >        <button id="formsubmit" type="submit">Submit</button>
> >> >    </s:form>
> >> >    <script  type="text/javascript">
> >> >        YAHOO.util.Event.onDOMReady(YAHOO.strutsform.init);
> >> >    </script >
> >> > </body>
> >> > </html>
> >> > ---------------
> >> > ---struts.xml------------
> >> > <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC 
> >> > "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
> >> > "struts-2.0.dtd" > <struts>
> >> >    <constant name="struts.devMode" value="true" />
> >> >    <package extends="struts-default" name="main" 
> namespace="/main">
> >> >        <action name="main">
> >> >            <result>/form.jsp</result>
> >> >        </action>
> >> >        <action name="Form" 
> class="com.wamu.strutsform.FormAction">
> >> >            <result name="input">/form.jsp</result>
> >> >            <result>/form.jsp</result>
> >> >        </action>
> >> >    </package>
> >> >
> >> >    <package extends="json-default" name="json" namespace="/json">
> >> >        <action name="Form" class="com.wamu.strutsform.FormAction"
> >> > method="jsonSubmit">
> >> >            <interceptor-ref name="logger"></interceptor-ref>
> >> >            <interceptor-ref 
> name="completeStack"></interceptor-ref>
> >> >            <result type="json">
> >> >                <param name="wrapWithComments">true</param>
> >> >            </result>
> >> >            <result name="input">/form.jsp</result>
> >> >        </action>
> >> >    </package>
> >> > </struts>
> >> > ---------------
> >> > ---FormAction.java------------
> >> > package com.wamu.strutsform;
> >> > import org.apache.commons.logging.Log; import 
> >> > org.apache.commons.logging.LogFactory;
> >> > import com.opensymphony.xwork2.ActionSupport;
> >> >
> >> > public class FormAction extends ActionSupport {
> >> >    private static final Log    logger  =
> >> > LogFactory.getLog(FormAction.class);
> >> >
> >> >    private String  lastName;
> >> >    private String  firstName;
> >> >
> >> >    public String getLastName() { return lastName; }
> >> >    public String getFirstName() { return firstName; }
> >> >
> >> >    public void setLastName(String lastName)
> >> >    { this.lastName = lastName; }
> >> >    public void setFirstName(String firstName)
> >> >    { this.firstName = firstName; }
> >> >
> >> >    public String execute()
> >> >    {
> >> >        logger.info("execute.");
> >> >        return SUCCESS;
> >> >    }
> >> >
> >> >    public String jsonSubmit()
> >> >    {
> >> >        logger.info("jsonSubmit.");
> >> >        return SUCCESS;
> >> >    }
> >> > }
> >> > ---------------
> >> > ---strutsform.js------------
> >> > /**
> >> >  * @author u166705
> >> >  */
> >> > YAHOO.namespace("strutsform");
> >> >
> >> > YAHOO.widget.Logger.enableBrowserConsole();
> >> >
> >> > var $E    = YAHOO.util.Event;
> >> > var $D    = YAHOO.util.Dom;
> >> >
> >> > YAHOO.strutsform.init    =
> >> >    function ()
> >> >    {
> >> >        $E.onContentReady("formsubmit", function()
> >> >        {
> >> >            var submitButton  = new
> >> YAHOO.widget.Button("formsubmit");
> >> >        });
> >> >    };
> >> >
> >> > YAHOO.strutsform.submitform    =
> >> >    function()
> >> >    {
> >> >        var    callback    =
> >> >        {
> >> >            success: function(obj)
> >> >            {
> >> >                YAHOO.log("obj.responsetext[" +
> >> obj.responseText + "]");
> >> >            },
> >> >            failure: function(obj)
> >> >            {
> >> >                YAHOO.log("obj.responseText[" +
> >> obj.responseText + "]");
> >> >            }
> >> >        };
> >> >        
> YAHOO.util.Connect.setForm(document.getElementById("form"));
> >> >        YAHOO.util.Connect.asyncRequest("POST",
> >> > "/strutsform/json/Form.action",
> >> >                                        callback, null);
> >> >        return false;
> >> >    };
> >> > ---------------
> >> >
> >> >
> >>
> >>
> >>
> >> --
> >> "Hey you! Would you help me to carry the stone?" Pink Floyd
> >>
> >> 
> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >>
> >
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> 
> 
> 
> --
> "Hey you! Would you help me to carry the stone?" Pink Floyd
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to