Musachy, 

Thanks for your many replies... Does this JSON look like the right
format? As far as I can tell, it matches your snippet below -- but I get
the same dojo parting error.

[{"questions":{"420":"Is your Java Application a ME, SE or EE
application?"}},{"questions":{"440":"If your Java Application is an SE
application does it use Java Web Start?"}},{"questions":{"450":"If your
Java Application is a Java Web Application, list the application server
used for production"}}]

-----Original Message-----
From: Musachy Barroso [mailto:[EMAIL PROTECTED] 
Sent: Monday, February 04, 2008 3:52 PM
To: Struts Users Mailing List
Subject: Re: AjaxTag 1.3 support?

The rule to use a map (simplest one) was added on 2.1, on 2.0.x the
easiest way to generate the json is to have an object with a map field
that matches the name of "dataFieldName" in the autocompleter tag:

class QuestionJson {
  private Map questions;
  ....
}

public QuestionJson getQuestionJson() {
  Question q= ... [from my list]
   Map m = new HaswhMap();
   m.put("Key1", q.getQuestion1());
   m.put("Key2", q.getQuestion2());
   return new QuestionJson(m);
}

<s:autocompleter ... dataFieldName="questions" ../>

that will generate something like:

{
  "questions": {
     "Key1" : "Question 1",
     "Key2" : "Question 2",
  }
}

//that's the idea, but I typed out of what I remember which is often not
good :)

musachy

On Feb 4, 2008 4:34 PM, Griffith, Michael *
<[EMAIL PROTECTED]> wrote:
> Musachy,
>
> I'm still not getting it...
> I am now serializing a list of maps with the entity id and text I
> want...
>
> Map<String,String> m= new HashMap<String,String>();
> Question q= ... [from my list]
> m.put("id", q.getId().toString());
> m.put("text", q.getText());
> newList.add(m);
>
> And my JSON result looks:
>
> [JSON][{"text":"Is your Java Application a ME, SE or EE
> application?","id":"420"},{"text":"If your Java Application is an SE
> application does it use Java Web Start?","id":"440"},{"text":"If your
> Java Application is a Java Web Application, list the application
server
> used for production","id":"450"},{"text":"List any Java Web Services
> Technologies Used","id":"490"},{"text":"List any Java Web Application
> Technologies Used for presentation","id":"500"},{"text":"List any Java
> EE Technologies used in your application","id":"510"}]
>
> I added the @JSON annotation as such:
>
>         @JSON(name="question")
>         public List<Map<String,String>> getNewList(){
>                 return newList;
>         }
>
> But it appears to be ignored.
>
> MG
>
> -----Original Message-----
> From: Musachy Barroso [mailto:[EMAIL PROTECTED]
>
> Sent: Monday, February 04, 2008 2:53 PM
> To: Struts Users Mailing List
> Subject: Re: AjaxTag 1.3 support?
>
> Take a look here:
>
> http://cwiki.apache.org/S2PLUGINS/json-plugin.html
>
> musachy
>
> On Feb 4, 2008 3:43 PM, Griffith, Michael *
> <[EMAIL PROTECTED]> wrote:
> > So, if you have an array of Entity objects, in my case question:
> >
> > How can I produce?
> >  {
> >      "question" : [
> >          ["1","question 1 text..."],
> >          ["2","question 2 text..."]
> >
> >      ]
> >  }
> >
> > -----Original Message-----
> > From: Musachy Barroso [mailto:[EMAIL PROTECTED]
> > Sent: Monday, February 04, 2008 2:37 PM
> > To: Struts Users Mailing List
> > Subject: Re: AjaxTag 1.3 support?
> >
> > yes, but the output will depend on what you feed the JSON result.
> >
> > musachy
> >
> > On Feb 4, 2008 3:20 PM, Griffith, Michael *
> > <[EMAIL PROTECTED]> wrote:
> > > Musachy,
> > >
> > > I must have missed your point. Isn't the idea of using the JSON
> > plug-in
> > > so you don't have to iterate and create the list? If I have an
array
> > or
> > > Entity objects or maps, isn't there a way that the plug-in will
> create
> > > the JSON specified below?
> > >
> > > MG
> > >
> > > -----Original Message-----
> > > From: Musachy Barroso [mailto:[EMAIL PROTECTED]
> > > Sent: Monday, February 04, 2008 1:56 PM
> > > To: Struts Users Mailing List
> > > Subject: Re: AjaxTag 1.3 support?
> > >
> > >
> > > to use the dataFIeldName, you have to return something like:
> > >
> > > {
> > >     "state" : [
> > >         ["Alabama","AL"],
> > >         ["Alaska","AK"]
> > >     ]
> > > }
> > >
> > > if you are using 2.1 check this link:
> > >
> > >
> >
>
http://cwiki.apache.org/WW/ajax-and-javascript-recipes.html#AjaxandJavaS
> > > criptRecipes-Autocompleter
> > >
> > > otherwise just an array of arrays should do:
> > >
> > > [
> > >     ["Alabama", "AL"],
> > >     ["Alaska", "AK"]
> > > ]
> > >
> > > musachy
> > >
> > > On Feb 4, 2008 2:46 PM, Griffith, Michael *
> > > <[EMAIL PROTECTED]> wrote:
> > > > Musachy
> > > >
> > > > Here is the autocompleter tag and the JSON returned...
> > > >
> > > > <s:label name="text" value="Search for Question Text:" />
> > > > <s:url id="search" namespace="/search"
> > > > value="/search/searchByText.action"/>
> > > > <s:autocompleter theme="ajax" href="%{search}"
> > > >                 name="text"
> > > >                 dataFieldName="text"
> > > >                 loadOnTextChange="true"
> > > >                 indicator="indicator"
> > > >                 dropdownHeight="300"
> > > >                 cssStyle="width: 200px;"
> > > >                 searchType="substring"
> > > >                 autoComplete="false"
> > > >                 showDownArrow="false"
> > > >                 loadMinimumCount="3"/>
> > > > <img id="indicator"
> > > > src="${pageContext.request.contextPath}/images/indicator.gif"
> > > > alt="Loading..." style="display:none"/>
> > > >
> > > >
> > > > [JSON][{"id":420,"questionType":{"declaringClass":"class
> > > > gov.hhs.fda.datacall.model.QuestionType"},"text":"Is your Java
> > > > Application a ME, SE or EE
> > > > application?"},{"id":440,"questionType":{"declaringClass":"class
> > > > gov.hhs.fda.datacall.model.QuestionType"},"text":"If your Java
> > > > Application is an SE application does it use Java Web
> > > > Start?"},{"id":450,"questionType":{"declaringClass":"class
> > > > gov.hhs.fda.datacall.model.QuestionType"},"text":"If your Java
> > > > Application is a Java Web Application, list the application
server
> > > used
> > > > for
production"},{"id":490,"questionType":{"declaringClass":"class
> > > > gov.hhs.fda.datacall.model.QuestionType"},"text":"List any Java
> Web
> > > > Services Technologies
> > > > Used"},{"id":500,"questionType":{"declaringClass":"class
> > > > gov.hhs.fda.datacall.model.QuestionType"},"text":"List any Java
> Web
> > > > Application Technologies Used for
> > > > presentation"},{"id":510,"questionType":{"declaringClass":"class
> > > > gov.hhs.fda.datacall.model.QuestionType"},"text":"List any Java
EE
> > > > Technologies used in your application"}]
> > > >
> > > >
> > > > -----Original Message-----
> > > > From: Musachy Barroso [mailto:[EMAIL PROTECTED]
> > > > Sent: Monday, February 04, 2008 1:22 PM
> > > > To: Struts Users Mailing List
> > > > Subject: Re: AjaxTag 1.3 support?
> > > >
> > > > funny thing is that now I remember the code(duh!), it is in the
> > struts
> > > > widget. It seems like the json is empty. Paste the section of
your
> > jsp
> > > > with the autocompleter and the json that your action is
returning.
> > > >
> > > > regards
> > > > musachy
> > > >
> > > > On Feb 4, 2008 2:16 PM, Griffith, Michael *
> > > > <[EMAIL PROTECTED]> wrote:
> > > > > Jeromy,
> > > > >
> > > > > Thanks for your help. I was able to finally get the
> autocompleter
> > to
> > > > > work with the example you provided.
> > > > >
> > > > > Strange behavior -- I can only get the autocompleter to work
if
> > the
> > > > list
> > > > > (array) is of the type String. If I try to return an array of
my
> > > > Entity
> > > > > objects, or a Map I get the dojo error:
> > > > >
> > > > > FATAL exception raised: TypeError: Value undefined (result of
> > > > expression
> > > > > this.data[x][0].toLowerCase) is not object.
> > > > >
> > > > > I tried specifying the attribute dataField on the
autocompleter,
> > and
> > > > it
> > > > > didn't work either.
> > > > >
> > > > > I should be able to serialize the entity objects right? The
JSON
> > > that
> > > > > was passed back to the browser looked like it serialized my
> > objects
> > > > just
> > > > > fine.
> > > > >
> > > > > Again, thanks to all the people who replied to my question.
> > > > >
> > > > > MG
> > > > >
> > > > >
> > > > > -----Original Message-----
> > > > > From: Hodgins, Grant [mailto:[EMAIL PROTECTED]
> > > > > Sent: Monday, February 04, 2008 12:31 PM
> > > > > To: Struts Users Mailing List
> > > > > Subject: RE: AjaxTag 1.3 support?
> > > > >
> > > > > Thanks for the insight Jeremy.
> > > > >
> > > > > I totally agree that writing to the response is not an elegant
> > > > solution.
> > > > > But sometimes we choose quick solutions that work when a
project
> > > > > deadline looms.
> > > > >
> > > > > The reason I initially chose AjaxTags was that the example for
> the
> > > > > autocompleter combo in Struts Showcase didn't work in IE6(the
> last
> > > > one):
> > > > >
http://www.planetstruts.org/struts2-showcase/ajax/autocompleter/
> > > > >
> > > > > Grant
> > > > >
> > > > > ________________________________
> > > > >
> > > > > From: Jeromy Evans [mailto:[EMAIL PROTECTED]
> > > > > Sent: Fri 2/1/2008 4:35 PM
> > > > > To: Struts Users Mailing List
> > > > > Subject: Re: AjaxTag 1.3 support?
> > > > >
> > > > >
> > > > >
> > > > > My 2c:
> > > > > I think this is a bad solution and shouldn't be encouraged.
> It's
> > > > > marginally better than writing a custom servlet.
> > > > >
> > > > > Struts2 ResultTypes [1] are designed specifically for
> controlling
> > > the
> > > > > type and content of results from actions to separate the view
> from
> > > the
> > > > > model, even if the "view" is XML data.  Accessing the response
> and
> > > > > writing to it directly isn't necessary except in the rarest of
> > > cases.
> > > > >
> > > > > For Ajax/JS libraries that use JSON, the JSON Plugin (JSON
> > > ResultType)
> > > > > [2] will serialize your action into JSON automatically
> > > > > The XSL ResultType will serialize your action into XML if you
> > > provide
> > > > a
> > > > > stylesheet [3]
> > > > > The REST plugin includes code to serialize your action into
XML
> > > using
> > > > > Xstream. [4]
> > > > >
> > > > > My point is, your action can setup a model (eg. a javabean
> > matching
> > > > the
> > > > > model expected by AjaxTag), and the ResultType can serialize
it
> to
> > > the
> > > > > output stream.  In this case I'd create a custom result type
> using
> > > > > XStream, but you could also use a XML template in a Tile, or
> have
> > a
> > > > > ResultType that accesses the instance created by
AjaxXMLBuilder.
> > > > >
> > > > > [1] http://struts.apache.org/2.0.11/docs/result-types.html
> > > > > [2] http://cwiki.apache.org/S2PLUGINS/json-plugin.html
> > > > > [3] http://struts.apache.org/2.0.11/docs/xsl-result.html
> > > > > [4] http://xstream.codehaus.org/
> > > > > [5]
> http://struts.apache.org/2.0.11/docs/result-configuration.html
> > > > >
> > > > > regards
> > > > > Jeromy Evans
> > > > >
> > > > > Hodgins, Grant wrote:
> > > > > > I was able to get the AjaxTags stuff working (with Tiles2
> > although
> > > I
> > > > > don't think that matters at all).
> > > > > >
> > > > > > As Dave said, your action should return null since you want
> the
> > > > action
> > > > > to return XML in the response.
> > > > > >
> > > > > > Instead, in addition to returning a null result, I simply
> wrote
> > > the
> > > > > xml to the response:
> > > > > >
> > > > > > AjaxXmlBuilder xml = new AjaxXmlBuilder();
> > > > > >
> > > > > > ... build your xml response ...
> > > > > >
> > > > > > response.setContentType("text/xml; charset=iso-8859-1");
> > > > > > response.setHeader("Cache-Control", "no-store, max-age=0,
> > > no-cache,
> > > > > must-revalidate");
> > > > > > response.addHeader("Cache-Control", "post-check=0,
> > pre-check=0");
> > > > > > response.setHeader("Pragma", "no-cache");
> > > > > >
> > > > > > PrintWriter pw = response.getWriter();
> > > > > > pw.write(xml.toString());
> > > > > > pw.close();
> > > > > >
> > > > > > Hope this helps.
> > > > > >
> > > > > > Grant
> > > > > >
> > > > > > ________________________________
> > > > > >
> > > > > > From: Griffith, Michael *
> [mailto:[EMAIL PROTECTED]
> > > > > > Sent: Fri 2/1/2008 3:48 PM
> > > > > > To: Struts Users Mailing List
> > > > > > Subject: RE: AjaxTag 1.3 support?
> > > > > >
> > > > > >
> > > > > >
> > > > > > Dave,
> > > > > >
> > > > > > Thanks for the reply. I guess I should have said freemarker
> > > instead
> > > > of
> > > > > > sitemesh...?  At any rate, when the docs don't match the
> > release,
> > > > it's
> > > > > a
> > > > > > bad thing.
> > > > > >
> > > > > > I shouldn't need to do any of this should I? Can you point
me
> at
> > a
> > > > > > simple, minimalist example of the <s:autocompleter> tag?
> > > > > >
> > > > > > mg
> > > > > >
> > > > > > -----Original Message-----
> > > > > > From: Dave Newton [mailto:[EMAIL PROTECTED]
> > > > > > Sent: Friday, February 01, 2008 5:42 PM
> > > > > > To: Struts Users Mailing List
> > > > > > Subject: Re: AjaxTag 1.3 support?
> > > > > >
> > > > > > --- "Griffith, Michael *" <[EMAIL PROTECTED]>
> wrote:
> > > > > >
> > > > > >> public class QuestionAction extends BaseAction implements
> > > > > >> ModelDriven<Question>, Preparable, ServletRequestAware,
> > > > > >> ServletResponseAware {
> > > > > >>       public String getSearchTerm() throws Exception {
> > > > > >>               System.out.println("**** Question Search
Term:"
> +
> > > > qt);
> > > > > >>               List<Question> results=
> > > > > >>
> > > > > > questionService.getQuestions(qt);
> > > > > >
> > > > > >>               AjaxXmlBuilder builder= new AjaxXmlBuilder();
> > > > > >>               builder.addItems(results, "questionType",
> > "text");
> > > > > >>
> > > > > >>                response.setContentType("text/xml");
> > > > > >>                response.setHeader("Cache-Control",
> "no-cache");
> > > > > >>                ServletOutputStream out =
> > > > response.getOutputStream();
> > > > > >>                out.print(builder.toString());
> > > > > >>                out.close();
> > > > > >>
> > > > > >>               return SUCCESS;
> > > > > >>       }
> > > > > >>
> > > > > >> My struts mapping:
> > > > > >>
> > > > > >>       <package name="question" extends="base-pkg"
> > > > > >> namespace="/question">
> > > > > >>               <action name="get-term"
method="getSearchTerm"
> > > > > >> class="...QuestionAction">
> > > > > >>                       <result name="success"
> > > > > >> type="tiles">question.panel</result>
> > > > > >>               </action>
> > > > > >>       </package>
> > > > > >>
> > > > > >
> > > > > > If you're writing directly to the stream I doubt you'd even
> want
> > > to
> > > > > > return
> > > > > > anything other than a null from the action, no? What is the
> > > > > > "question.panel"
> > > > > > tile?
> > > > > >
> > > > > >
> > > > > >> The struts 2 Ajax documentation seems manic and dated. It
> seems
> > > the
> > > > > S2
> > > > > >> Ajax implementation is tied closely to sitemesh, which I am
> not
> > > > > using.
> > > > > >>
> > > > > >
> > > > > > SiteMesh? The Ajax implementation isn't tied to SiteMesh at
> all.
> > > > > >
> > > > > > Dated? Much of the S2 Ajax documentation is for S2.1, which
> > isn't
> > > > even
> > > > > > released yet. If anything, it's pre-dated.
> > > > > >
> > > > > > Dave
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > >
> >
---------------------------------------------------------------------
> > > > > > 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]
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > ----Notice Regarding Confidentiality----
> > > > > > This email, including any and all attachments, (this
"Email")
> is
> > > > > intended only for the party to whom it is addressed and may
> > contain
> > > > > information that is confidential or privileged.  Sierra
Systems
> > > Group
> > > > > Inc. and its affiliates accept no responsibility for any loss
or
> > > > damage
> > > > > suffered by any person resulting from any unauthorized use of
or
> > > > > reliance upon this Email.  If you are not the intended
> recipient,
> > > you
> > > > > are hereby notified that any dissemination, copying or other
use
> > of
> > > > this
> > > > > Email is prohibited.  Please notify us of the error in
> > communication
> > > > by
> > > > > return email and destroy all copies of this Email.  Thank you.
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>
------------------------------------------------------------------------
> > > > > >
> > > > > >
> > > >
> >
---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > > >
> > > > >
> > > >
> > >
> >
>
------------------------------------------------------------------------
> > > > > >
> > > > > > No virus found in this incoming message.
> > > > > > Checked by AVG Free Edition.
> > > > > > Version: 7.5.516 / Virus Database: 269.19.18/1255 - Release
> > Date:
> > > > > 1/02/2008 9:59 AM
> > > > > >
> > > > >
> > > > >
> > > > >
> > >
> ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > ----Notice Regarding Confidentiality----
> > > > > This email, including any and all attachments, (this "Email")
is
> > > > > intended only for the party to whom it is addressed and may
> > contain
> > > > > information that is confidential or privileged.  Sierra
Systems
> > > Group
> > > > > Inc. and its affiliates accept no responsibility for any loss
or
> > > > damage
> > > > > suffered by any person resulting from any unauthorized use of
or
> > > > > reliance upon this Email.  If you are not the intended
> recipient,
> > > you
> > > > > are hereby notified that any dissemination, copying or other
use
> > of
> > > > this
> > > > > Email is prohibited.  Please notify us of the error in
> > communication
> > > > by
> > > > > return email and destroy all copies of this Email.  Thank you.
> > > > >
> > > > >
> > > > >
> > > > >
> > >
> ---------------------------------------------------------------------
> > > > > 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]
> > > >
> > > >
> > >
> > >
> > >
> > > --
> > > "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]
> >
> >
>
>
>
> --
> "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