I have a solution :)
I needed it to make my own autocomplete

/**
 *
 */
package tapestryutil.mixins;

/** Workarround to add raw content to JSON, like function references and
such.
 * Number instances are not quoted and are trusted, so we use it.*/
final class JSONRaw extends Number {

    private final String rawText;

    JSONRaw(String rawText) {
        this.rawText = rawText;
    }

    @Override public double doubleValue() {return 0;}

    @Override public float floatValue() {return 0;}

    @Override public int intValue() {return 0;}

    @Override public long longValue() {return 0;}

    @Override public String toString() {
        return rawText;
    }
}




On Mon, Mar 9, 2009 at 3:33 PM, Andreas Andreou <andy...@di.uoa.gr> wrote:

> For json responses, i think it's good that the json is strict (i.e. no
> objects or
> callbacks allowed as values)
>
> For constructing js objects to be included in the html (to configure
> other js components)
> it's clear that JSONObject isn't the correct answer (json != js object)
>
> Probably the autocmplete mixin needs to use a 'new' JsObject class
>
> On Mon, Mar 9, 2009 at 4:10 PM, ningdh <ningd...@gmail.com> wrote:
> > Not aware of that, sorry.
> >
> > In my window component, I hack to replace double quote of all function to
> empty.
> > JSONObject options= new JSONObject();
> > options.put("showEffect", "TO_BE_REPLACE" +
> this.showEffect+"TO_BE_REPLACE");
> >
> > getPageRenderSupport().addScript("%s = new Window(%s);", getUniqueId(),
> filterJsFunction(options.toString()));
> >
> > private String filterJsFunction(String jsonString) {
> >        // function begin
> >        jsonString = jsonString.replaceAll("\"TO_BE_REPLACE", "");
> >        // function end
> >        jsonString = jsonString.replaceAll("TO_BE_REPLACE\"", "");
> >
> >        return jsonString;
> >    }
> >
> > Well, a bit stupid, but works.
> >
> > DH
> > ----- Original Message -----
> > From: "Francois Armand" <farm...@linagora.com>
> > To: "Tapestry users" <users@tapestry.apache.org>
> > Sent: Monday, March 09, 2009 9:51 PM
> > Subject: Re: Tapestry JSONObject : no 'function' type, any workaround ?
> >
> >
> >> ningdh wrote:
> >>> toString method of JsonObject would double quote our value.
> >>> One way is to create some data type extends jsonobject to encapsule
> your data and override the toString method. I haven't tried it yet.
> >>>
> >>
> >> But JSONObject and JSONArray are final, that's not possible - it was my
> >> first plan. How can I workaround that ?
> >>
> >>
> >> --
> >> Francois Armand
> >> Etudes & Développements J2EE
> >> Groupe Linagora - http://www.linagora.com
> >> Tél.: +33 (0)1 58 18 68 28
> >> -----------
> >> http://fanf42.blogspot.com
> >> InterLDAP - http://interldap.org
> >> FederID - http://www.federid.org/
> >> Open Source identities management and federation
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> >> For additional commands, e-mail: users-h...@tapestry.apache.org
> >>
> >>
>
>
>
> --
> Andreas Andreou - andy...@apache.org - http://blog.andyhot.gr
> Tapestry / Tacos developer
> Open Source / JEE Consulting
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>

Reply via email to