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.java
> :150)
>        at
> com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java
> :138)
>        at
> com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(
> 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"></scri
>> > 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"></scrip
>> > 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]

Reply via email to